DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
NomalDataGridViewの複数行選択で歯抜け選択を無効にしたい(2) | Nomal証券会社へのログイン(1) | Nomalユーザーフォームに埋め込んだAutoCADの変化を捉える(0) | Nomalシステムドライブ以外へのページング設定が反映されない(5) | Nomalブラウザでコピーした透過PNGを貼り付けたい(4) | Nomalforeachでループ回数を取得(2) | Nomalbitmapが保存できない(2) | Nomal特定ピクセルで画像を読み込みたい(2) | NomalDataGridViewでAlt+Enterで改行したい(2) | Nomal全角シフト中にアクセスキーが効かない(5) | NomalDataAdapter.Updateで構文エラー(6) | Nomal抽象クラスで実装したクラスの情報を知る(3) | NomalProcessクラスからbatファイル実行後、KILLできない(2) | Nomal画面遷移(モーダルとモードレス)(2) | Nomal兆億万表記の文字列を数値に変換できる?(3) | NomalGetDirectoriesでルートを指定するとエラーになる(3) | NomalLinqにおける明示的型指定の方法(3) | Nomal2つのradの数値から1つの角度を求めるコードを改善できますか?(C++)(2) | Nomalコンソールアプリで、WebView2の利用(2) | NomalEntity Frameworkは、使えるか?(2) | Nomalデータベースからのテーブル名一覧の効率的な取得方法(3) | NomalC#のlong型でオーバーフローになる(2) | Nomal正規表現のパターン表記方法(2) | NomalWebView2によるスクレ―ピング(4) | Nomalこういた物を作れますか?(2) | Nomalツールボックスにtableadapterが表示されない(1) | NomalC# Chart X軸上のグラフ表示(3) | NomalVB.NETでBluetoothデバイスの電池残量を取得する方法(3) | Nomalクリスタルレポート 明細部のサブレポート(0) | Nomal重なったPictureBox同士を透過する方法(7) | NomalWindowsフォームデザイナについて(3) | NomalVB.NETからcmdでpingを実行した時の結果(5) | Nomalvb.netでExcelファイル操作(7) | Nomalvb.netでのExcelファイルそうさ(2) | Nomalキーボード+バーコードでキーボード入力を無効にしたい(6) | Nomalファイルとして配置したマニフェストを優先したい(2) | NomalTabPageの背景色(5) | NomalVB2022でクリスタルレポートが開けない(2) | NomalC#でJpeg圧縮のTiffファイルを作成したい(4) | Nomalエクセルのみ監視ができない(2) | NomalDataGridViewのVirtualModeを有効した場合の実装方法(4) | NomalExcelの数値 -> 日付みたいな関数?(2) | NomalDrawstringでの透過文字作成(3) | Nomaljumbo icon(256x256)が存在するか知る方法(6) | NomalSpinWait()を使う理由(2) | Nomalantecedentってなんですか?(2) | Nomalワンタイムパスワードのサイトに自動ログインしてアクセストークンを得る(3) | Nomalstyle.displayだと効率悪いから違うやり方をしたいです。(5) | Nomalテーブルを順番通りに直すプログラムを外部で読み込めるようにしたいです。(4) | NomalJSONの複雑な入れ子内部の値を取りたい。(3) | Nomalグリッド表示レコードをJSONに変換(5) | Nomalシステム時計の設定(3) | NomalSeleniumで開いているページのTableを編集したい(5) | Nomalソケット通信入門 ひらがな(4) | NomalVisual Basicでエラーが出る(3) | Nomalインストーラにて、ローミングフォルダにファイルを配置したい(0) | NomalRGB値の所得(2) | NomalVB.net からAccessDBへの接続(2) | Nomal時間変数(文字列)の扱い(4) | Nomal画像のスクロール(6) | Nomalタイマーの一括処理(6) | NomalTreeViewとDataGridViewのスクロールを同期(シンクロ)させたい(4) | NomalTreeViewの現在位置とDataGridViewの現在位置を合わせたい(7) | Nomalフォームのリサイズ時にDataGridViewが再描画されない(4) | NomalPDFをフォーム上で表示させる方法につきまして(4) | NomalPictureBoxの画像を連続保存(11) | NomalテキストボックスのValidatingイベントよりも先に発生するボタン発生イベントは何でしょう?(2) | Nomal継承元フォームで各フォームのボタン動作を検知したい(3) | NomalWindowsエクスプローラからのドラッグ&ドロップ(2) | Nomalラジオボタンの一括設定(7) | Nomalクリックイベントでexeを作成できるか(2) | Nomal作成した白黒画像をWordに貼り付けてから「図として保存」(8) | Nomalアセンブリ情報が載らない(1) | NomalRichTextBoxのテキストをpictureBOXへ(12) | Nomalc#で日付型の定義の仕方で質問があります。(2) | Nomal先頭に空白(スペース)があるファイルを読み込んでRichTextBoxへ書き出すとスペースが削除える(6) | NomalExcel Com オブジェクトの増殖(13) | Nomal二次元マップから値の取得(1) | NomalアプリでHDMIへ出す解像度を変えたい(4) | NomalDataGridViewのドロップダウンリストの表示と選択後の値を分けたい(1) | Nomal列車の時間ごとの位置情報を表示したいです。(2) | Nomal画像の中心を基点に回転(4) | NomalDataGridViewの行ヘッダーに行番号を表示した時のエラー(4) | NomalタッチキーボードでIMEを自動で切替えたい(6) | NomalVSTOによるエクセルアドインのインストーラーでのアップデート(1) | NomalMP4動画を再生する方法について(5) | NomalVB.NetでVB6.0と同じFontを指定しても同様に印刷されない(9) | NomalLabelで文字単位の背景色(7) | NomalLableのカラー色を文字変数から変更したい(5) | NomalUrlにアクセスするとダウンロードされるファイルを捕まえる(2) | Nomalタブレット等でスワイプによるスクロールを実装(2) | NomalTEXTBOXのプロパティを文字列に(7) | NomalPDFをフォーム上で表示させる方法につきまして(6) | NomalChart X軸上の描画を切り替えたい(0) | NomalRichTextBoxへのドラッグ&ドロップしたExcelファイルの扱い(3) | Nomal特定のPCだけ発生する「パディングは無効なので削除できません」のエラーの原因(6) | NomalASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする(4) | NomalDatagridViewでファンクションキーを止めたい(5) | Nomal表示動作が重くなる(3) | NomalDataGridViewの特定セルにボタンを配置する方法(5) |



■記事リスト / ▼下のスレッド
■35379 / 親記事)  インストーラにて、ローミングフォルダにファイルを配置したい
□投稿者/ potech 一般人(1回)-(2023/02/13(Mon) 20:31:44)
  • アイコン環境/言語:[ C# VS2019] 
    分類:[インストーラ] 

    任意のフォルダにファイルを配置する際、
    ローミングユーザーのApplication Dataフォルダへの配置は可能でしょうか
    ファイルシステム-Custom Folde内の
    DefaultLocationにて、指定する書き方があればご教授ください


    ↓以下のフォルダに特定のファイルを配置したい
    C:\Users\xxxxx\AppData\Roaming

違反を報告
引用返信



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35376 / 親記事)  RGB値の所得
□投稿者/ ま〜 付き人(60回)-(2023/02/10(Fri) 16:06:29)
  • アイコン環境/言語:[Vs2022 VB] 
    分類:[.NET] 

    また、ハマってます。

    画像のRGB値を取りたい思っています

    下記のコードで特定の画像でエラーとなります
    エラーにならない画像もあります
    また、何か間違ってますでしょうか?

    PictureBox1.Size = New System.Drawing.Size(320, 160)
    PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage

    Dim X, Y As Integer
    Dim Picture00 As Bitmap
    Dim RGB As Long

    Picture00 = CType(PictureBox1.Image, Bitmap)

    For Y = 0 To PictureBox1.Height - 1
    For X = 0 To PictureBox1.Width - 1
    RGB = Picture00.GetPixel(X, Y).ToArgb()

    ’下記はエラー内容 この時のXの値は307です
    System.ArgumentOutOfRangeException
    HResult=0x80131502
    Message=パラメーターは正の値で、幅より小さい値を指定しなければなりません。
    パラメーター名:x
    Source=System.Drawing
    スタック トレース:
    at System.Drawing.Bitmap.GetPixel(Int32 x, Int32 y)

    以上、よろしくお願いします
違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35377 / ResNo.1)  Re[1]: RGB値の所得
□投稿者/ Hongliang 大御所(637回)-(2023/02/10(Fri) 16:45:57)
  • アイコン多分、Picture00.Widthが307になっていると思います。
    > PictureBox1.Size = New System.Drawing.Size(320, 160)
    > PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
    これはPictureBox1が表示する際に画像を引き延ばしているだけで、実際のBitmapオブジェクトの縦横が変わるわけではありません。

    Bitmapオブジェクト自体の縦横を変更したいなら、簡単には
    Dim 新ビットマップ = New Bitmap(元ビットマップ, 変更後のサイズ)
    みたいに書くことができます。
    // ちゃんと補間するとなるとGraphicsオブジェクトを使う必要が出てきますが。
違反を報告
引用返信
■35378 / ResNo.2)  Re[2]: RGB値の所得
□投稿者/ ま〜 付き人(61回)-(2023/02/13(Mon) 15:20:25)
  • アイコンNewの使い方が曖昧だったのですが
    使い方ようやく分かりました

    ありがとうございます

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35372 / 親記事)  VB.net からAccessDBへの接続
□投稿者/ うっきー 一般人(4回)-(2023/02/09(Thu) 17:55:29)
  • アイコン環境/言語:[VB.NET, Windows10,accdb] 
    分類:[.NET] 

    お世話になっております。

    VB.NETのアプリからAccessのDBにアクセスする場合
    アプリを使用するパソコンに、
    Accessランタイムをインストールしないでも
    接続できるような方法はありますでしょうか?


    現在使用しているVB.NETのアプリは
    Microsoft.ACE.OLEDB.16.0 を使用してAccessのDBにアクセスしており
    このアプリを使用するパソコンは、
    Accessランタイムのインストールが必要と聞いています。

    これを、アプリ側の設定変更かプログラムの変更(あるいはその両方)で
    Accessのインストール作業を不要にしたいです。


    例えば、Oracleとかだと、アプリ側にDLLがあれば
    各端末では設定不要だと思うので・・・

    初歩的な質問で申し訳ありませんが、どうぞよろしくお願いいたします。


違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■35373 / ResNo.1)  Re[1]: VB.net からAccessDBへの接続
□投稿者/ 魔界の仮面弁士 大御所(1535回)-(2023/02/09(Thu) 18:27:39)
  • アイコン2023/02/09(Thu) 19:52:18 編集(投稿者)

    No35372に返信(うっきーさんの記事)
    > Accessランタイムをインストールしないでも
    > 接続できるような方法はありますでしょうか?

    現行 OS (Windows 10/11 など) では、追加インストールが必須です。
    古い OS だとしても、対 .accdb だと、インストール無しには無理ですね。


    対 .mdb なら、Jet 4.0 未満の世代なら、OS によっては
    標準で組み込まれているものがあったりしますが…。

    Jet 3.0/3.5x 世代の .mdb が相手の場合、
    Windows 2000 (32bit) であれば、標準で繋げられます。

    Windows 98/ME 世代の場合は、.mdb への接続は
     ・単体頒布版の JET データベースエンジン インストーラー
     ・JET 同梱世代の MDAC
     ・Access ランタイム(あるいは Office)
    のいずれかが必要です。

    まぁ現実的では無いですね。Windows 98〜2000 世代だと、
    対応する .NET Framework も 2.0 までですし…。


    > 例えば、Oracleとかだと、アプリ側にDLLがあれば
    > 各端末では設定不要だと思うので・・・
    Managed ODP.NET のことですね?

    JET / ACE エンジンについては、レジストリ登録が必須なので、
    いわゆる XCOPY 配置による動作はできません。
違反を報告
引用返信
■35374 / ResNo.2)  Re[2]: VB.net からAccessDBへの接続
□投稿者/ うっきー 一般人(5回)-(2023/02/10(Fri) 09:03:44)
  • アイコン魔界の仮面弁士さん、
    丁寧なご説明ありがとうございます。

    残念ながらインストールは必要とのことですが
    それすらよく分かっていなかったので、とても助かりました!


    本当にありがとうございます。

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■35368 / 親記事)  時間変数(文字列)の扱い
□投稿者/ ま〜 付き人(57回)-(2023/02/07(Tue) 20:11:18)
  • アイコン環境/言語:[Vs20022 VB] 
    分類:[.NET] 

    いつもお世話になります

    レベルの低い内容ですが
    昔ならこんな感じの事が出来た気がしたんで書いてみましたが

    If Now.ToString("HH:mm") = CStr(DateTimePicker1.ToString("HH:mm")) Then ・・・・

    String=DateTimePicker1.ToString("HH:mm")


    結果は難しい様で
    "String ""HH:mm"" から型 'Integer' への変換は無効です。"
    とエラーとなります

    色々やってるな中で変換の種類によってエラーが変わるのですが
    今回、どうしてInteger扱いになるのか理解出来ずに苦しんでます。

    アドバイスお願いします。
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■35369 / ResNo.1)  Re[1]: 時間変数(文字列)の扱い
□投稿者/ 魔界の仮面弁士 大御所(1533回)-(2023/02/07(Tue) 21:02:32)
  • アイコンNo35368に返信(ま〜さんの記事)
    > いつもお世話になります
    投稿時に、いろいろと転記ミスをしていませんか?


    > If Now.ToString("HH:mm") = CStr(DateTimePicker1.ToString("HH:mm")) Then ・・・・
    えぇと、
     = CStr(〜.ToString("HH:mm"))

     = 〜.ToString("HH:mm")
    と同義ですよ。文字列を文字列に変換しても無意味かと…。


    それと、DateTimePicker から入力された日付は、
    Value プロパティで取得されます。すなわち
     = DateTimePicker1.ToString("HH:mm")
    ではなく
     = DateTimePicker1.Value.ToString("HH:mm")
    とすべきです。

    とはいえ、DateTimePicker1 の ToString メソッドには
    引数を受け取るオーバーロードは無かったはずなので、本当にその表記なら
    > "String ""HH:mm"" から型 'Integer' への変換は無効です。"
    なエラーではなく、
    「BC30516 この引数の数を受け付ける 'ToString' がないため、オーバーロードの解決に失敗しました。」
    のコンパイルエラーになっているはずですが…?


    なお、書式文字列 ":" はカルチャー依存であり、
    コントロール パネルの設定によっては、
    変換結果が ":" 以外の文字になることがあります。

    カルチャーに依存することなく、常に ":" で返されるようにしたい場合は、
    "HH:mm" の代わりに "HH\:mm" 構文を使います。
    ("HH" や "mm" は、カルチャーに依存しません)

    もっとも、時刻区切りが ":" 以外に設定されているなんてことは
    日本語環境ではまず無いでしょうけれどね。


    > String=DateTimePicker1.ToString("HH:mm")
    String は予約語なので、「String という名前の変数」は作れません。

    予約語を変数名にしたい場合は、
    Dim [String] As String
    のように、角括弧で囲ってエスケープしてください。


    > 結果は難しい様で
    > "String ""HH:mm"" から型 'Integer' への変換は無効です。"
    > とエラーとなります
    コンパイル時エラーではなく、実行時エラーなのですよね?
    (おそらく、Option Strict Off モードでコンパイルしているはず)

    そのエラーが出るケースとして、以下の 2 パターンが想定されます。

    (1) 代入式の左辺が Integer 型の変数やプロパティで、右辺が文字列 "HH:mm" の時
     Dim jikan As Integer = "HH:mm"
     'Dim jikan As Integer = DateTimePicker1.Value.Hour.ToString("HH:mm")

    (2) Integer 型の引数を受け取るメソッドに、"HH:mm" という文字列引数を渡してた時
     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Test("HH:mm")
     End Sub
     Sub Test(hhmm As Integer)
     End Sub
違反を報告
引用返信
■35370 / ResNo.2)  Re[2]: 時間変数(文字列)の扱い
□投稿者/ ま〜 付き人(58回)-(2023/02/09(Thu) 13:17:30)
  • アイコンいつもありがとうございます
    また、棚ぼたで知識がはいりました。

    > 投稿時に、いろいろと転記ミスをしていませんか?

    ミスに近いかもです。伝えやすい様に Stringは文字列ですと表現したかった感じです。いらぬお手数お掛けしましてすみません 


    >  = DateTimePicker1.Value.ToString("HH:mm")

    ★これでした。Valueが必要でした。


    > 「BC30516 この引数の数を受け付ける 'ToString' がないため、オーバーロードの解決に失敗しました。」
    > のコンパイルエラーになっているはずですが…?

    実行時にその行に来た時にエラーとなっていました


    > (1) 代入式の左辺が Integer 型の変数やプロパティで、右辺が文字列 "HH:mm" の時
    >  Dim jikan As Integer = "HH:mm"
    >  'Dim jikan As Integer = DateTimePicker1.Value.Hour.ToString("HH:mm")
    >
    > (2) Integer 型の引数を受け取るメソッドに、"HH:mm" という文字列引数を渡してた時
    >  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    >   Test("HH:mm")
    >  End Sub
    >  Sub Test(hhmm As Integer)
    >  End Sub

    これ勉強になりました。
    ありがとうございます。

解決み!
違反を報告
引用返信
■35371 / ResNo.3)  Re[3]: 時間変数(文字列)の扱い
□投稿者/ 魔界の仮面弁士 大御所(1534回)-(2023/02/09(Thu) 14:36:13)
  • アイコンNo35370に返信(ま〜さんの記事)
    >> = DateTimePicker1.Value.ToString("HH:mm")
    > ★これでした。Valueが必要でした。
    >>「BC30516 この引数の数を受け付ける 'ToString' がないため、オーバーロードの解決に失敗しました。」
    >>のコンパイルエラーになっているはずですが…?
    > 実行時にその行に来た時にエラーとなっていました

    あー…状況理解。

    今回の場合、
     Dim s1 As String = DateTimePicker1.Value.ToString("HH:mm")
    と書くべきところを、間違えて、
     Dim s2 As String = DateTimePicker1.ToString("HH:mm")
    と書いていたわけですよね。


    DateTimePicker の ToString メソッドは、引数を持つオーバーロードが
    無いにも関わらず、BC30516 が発生しなかった理由は、
     Dim s As String = DateTimePicker1.ToString("HH:mm")
    というコードが、
     Dim s As String = CStr(DateTimePicker1.ToString().Chars(CInt("HH:mm")))
    の意味で、コンパイラに解釈されていたためです。


    Option Strict Off の弊害ですね…。
    Option Strict On でコンパイルが通るコードを目指すことをお奨めします。
    そうすれば、実行前にコーディングミスに気付けるはず!

    ----
    まず、元のコードはこれでした。
     s = DateTimePicker1.ToString("HH:mm")

    しかし、ToString には引数を受け取るオーバーロードが無いため、
    「引数の無いメソッド呼び出しは括弧を省略できる」というルールにより、
     s = DateTimePicker1.ToString()("HH:mm")
    の意味に解釈されます。

    そしてこれは要するに、
     s = DateTimePicker1.ToString().Chars("HH:mm")
    の呼び出しを意味します。

    つまり ("HH:mm") 部分は、「ToString メソッドの引数」ではなく、
    「String 型の既定のプロパティ(いわゆるインデクサ)の引数」と
    解釈されていたわけです。

    しかし、String のインデクサに渡せる引数は Integer 値だけです。

    Option Strict On であれば、この時点でコンパイルエラー
     BC30512『Option Strict On では 'String' から 'Integer' への暗黙的な変換は許可されていません。』
    が発生するので、すぐに気づくことができますが、
    Option Strict Off では検出してもらえません。

    そのため、実行した時点でようやく、
     System.InvalidCastException:
     String "HH:mm" から型 'Integer' への変換は無効です。
    のエラーが発生していた…というわけです。


    Dim v1 = DateTimePicker1.ToString() 'v1 は String 型となる
    Dim v2 = DateTimePicker1.ToString()(0) 'v2 は Char 型となる
解決み!
違反を報告
引用返信
■35375 / ResNo.4)  Re[4]: 時間変数(文字列)の扱い
□投稿者/ ま〜 付き人(59回)-(2023/02/10(Fri) 15:52:31)
  • アイコン変数の件
    ありがとうございます。
    Option Strict Onは知りませんでした。(これが私のレベルなのかも?
    ?)
    また2つ学びました


解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▲上のスレッド
■35361 / 親記事)  画像のスクロール
□投稿者/ ま〜 付き人(53回)-(2023/01/30(Mon) 14:51:42)
  • アイコン環境/言語:[VS2022 Basic Windows10] 
    分類:[.NET] 

    お世話になります

    PictureBox内に画像を下から少しづつスクロールして表示したのですが
    何か良い方法はありますでしょうか?


違反を報告
引用返信

▽[全レス6件(ResNo.2-6 表示)]
■35363 / ResNo.2)  Re[2]: 画像のスクロール
□投稿者/ ま〜 付き人(54回)-(2023/01/30(Mon) 17:25:56)
  • アイコンいつもありがとうございます。

    言葉足らず(文字足らず)ですみません

    人間は関与しない形で同じサイズの画像を下から徐々に出して行き上方向に消えていくのを作りたいです

    https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=34662&no=0&KLOG=4

    が該当するのでしょうか?


違反を報告
引用返信
■35364 / ResNo.3)  Re[3]: 画像のスクロール
□投稿者/ 魔界の仮面弁士 大御所(1531回)-(2023/01/30(Mon) 18:36:24)
  • アイコンNo35363に返信(ま〜さんの記事)
    > 人間は関与しない形で同じサイズの画像を下から徐々に出して行き上方向に消えていくのを作りたいです

    やりたいことは分かりましたが、質問内容は何ですか?
    手順的な面は既に回答していますが、どの点で詰まっている状況なのかを
    具体的に説明していただかないと、回答しづらいです。


    Timer の使い方は分かりますか?
     → Tick イベント、Interval プロパティ、Start/Stop メソッド


    PictureBox への描画方法は分かりますか?
     プログラミング > .NET Tips > 画像、印刷(GDI+)
      コントロールのGraphicsオブジェクトを使って、画像を表示する
      画像の一部を切り取って(トリミングして)表示する
      ワールド変換により画像を平行移動、拡大、縮小、回転して表示する
違反を報告
引用返信
■35365 / ResNo.4)  Re[4]: 画像のスクロール
□投稿者/ ま〜 付き人(55回)-(2023/01/31(Tue) 13:04:21)
  • アイコンいつもありがとうございます

    > Timer の使い方は分かりますか?
    >  → Tick イベント、Interval プロパティ、Start/Stop メソッド

    ここは昔(VB6)と変わらないので何とか使えてます

    https://dobon.net/vb/dotnet/graphics/transform.html
    を参考になんとかできました。ありがとうございます

    記事中にあります

    'ワールド変換行列を単位行列にリセット
    g.ResetTransform()

    の仕組みが分からないのですがこれはどう考えれば宜しいでしょうか?



違反を報告
引用返信
■35366 / ResNo.5)  Re[5]: 画像のスクロール
□投稿者/ 魔界の仮面弁士 大御所(1532回)-(2023/02/06(Mon) 13:51:46)
  • アイコンNo35365に返信(ま〜さんの記事)
    > ここは昔(VB6)と変わらないので何とか使えてます
    >
    > 'ワールド変換行列を単位行列にリセット
    > g.ResetTransform()
    > の仕組みが分からないのですがこれはどう考えれば宜しいでしょうか?

    VB6 時代の描画命令でも、座標系の変更はできましたよね。
    回転はなくてスケーリング程度ですが。

    Private Command1_Click()
     '座標系をリセットする
     Picture1.Scale
     '左上から 四分の一程度右下にずらした位置を、原点座標とする
     Picture1.Scale (-50, -50)-(150, 150)

     '赤箱はボックス中央に描かれる
     Picture1.Line (0, 0)-(100, 100), vbRed, BF

     '座標系をリセットする(左上が原点の Twips 座標系)
     Picture1.Scale

     '青箱はボックス左上に描かれる
     '(赤箱と同じ指定だが、座標系が異なるので描画位置も変化する)
     Picture1.Line (0, 0)-(100, 100), vbBlue, BF
    End Sub


    VB6 で座標系をユーザー定義単位系に変更する場合
     Picture1.ScaleMode = vbUser
     Picture1.Scale (x1, y1)-(x2, y2)
    などと書きました。

    引数付きの Scale メソッドは、
    ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight プロパティを
    一括指定するためのものです。
    http://rucio.a.la9.jp/main/kiso/Scale.htm

    で、変更した座標系を元の「左上原点の Twips 座標系」に戻す場合、
     Picture1.Scale '引数無しの Scale メソッド呼び出し
    もしくは、
     Picture1.ScaleMode = vbTwips
    などを使ってリセットできます。

    そして .NET の g.ResetTransform() というのは、この
    「元の座標系に戻すリセット処理」に相当します。


    .NET の Grapchis と VB6 の描画命令に互換性は無いので、
    細かい違いはありますが、ひとまず概念的な話ということで…。
違反を報告
引用返信
■35367 / ResNo.6)  Re[6]: 画像のスクロール
□投稿者/ ま〜 付き人(56回)-(2023/02/07(Tue) 19:32:31)
  • アイコンご指導の下色々やってみました。
    なるほど、なるほどって感じで
    やっと理解できました。

    ほんといつもありがとうございます。

    クローズします。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-6]






Mode/  Pass/


- Child Tree -