
お伺いしたい事があります
visual basic 2005 なのですが、
picture box にdrawlineで線を引き、他のフォームが前面に来て、
ドラッグするとラインが消えてしまいます
.Invalidated、 .over等を試したのですが、うまくいきませんでした。
再描画するタイミングを取得する方法としてどの様な方法があるのでしょうか?
それとも、
Dim canvs As Graphics = pbox.CreateGraphics()
canvs.DrawLine(
以外で描画するのでしょうか?
申し訳ありません宜しくお願いします。
No.3ベストアンサー
- 回答日時:
方法は(私が知る限り)2つあります。
・(可能であれば)Paintイベントで再描画
この方法の場合、描画の情報(どんな線をどこに引いたか、等)を保持しておくか、または
何らかの方法で再現できる(元々、(ユーザが引いた線でない)プログラムのみで
引いた線である、とか)
必要があります。
やり方は、Paintイベントプロシージャにて無理矢理、再度線を引くだけですが、
ユーザがフリーで描画する場合は再現が難しいですし、線が多いと重くなるので
一般的には、あまり有効でないと思います。
(単純な描画なら、コーディングも楽なので手っ取り早いですが)
・内部的にビットマップを用意して、それに描画して、そのビットマップを
PictureBox.Imageに設定
この方法なら、描画の最新情報を(内部ビットマップに)残しておける上に、
わざわざPaintイベントで再描画等する必要も無いので、より汎用的だと思います。
「ビットマップに直接描画する」のが、多少面倒になるかもしれませんが、
まぁ大した事ではないでしょう。
Dim bmp As New Bitmap(x, y)
Dim gr As Graphics = Graphics.FromImage(bmp)
(ここで描画)
PictureBox.Image = bmp
…みたいな感じですかね。
細かいことですがbmpとgrは、たぶんモジュールレベル以上の
アクセスレベルのほうが使いやすいでしょうね。
ありがとうございます
>Dim bmp As New Bitmap(x, y)
>Dim gr As Graphics = Graphics.FromImage(bmp)
>(ここで描画)
>PictureBox.Image = bmp
で解決できました
No.2
- 回答日時:
こんいちは、
http://homepage1.nifty.com/rucio/main/main.htm
このページに、基本的なことがいろいろ書いています。
描画についても、上記のURLの以下のURLに
詳細に書いています。
http://homepage1.nifty.com/rucio/main/dotnet/sho …
読んでみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- 美術・アート トレパク疑惑をかけられにくくするには ここ最近いわゆるトレパク警察のいいがかりがが厳しくなったようで 1 2023/08/21 09:59
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- 芸術学 透視図法の消失点は、どこに? 1 2023/06/14 00:09
- その他(クラウドサービス・オンラインストレージ) Googleのスプレッドシートで罫線を画像の前面に出す事は出来ないのでしょうか? 2 2022/05/01 05:31
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- 電気工事士 第一種電気工事士実技試験の配線の寸法に関する欠陥について、 寸法(器具にあっては中心からの寸法)が, 1 2022/12/09 20:10
- 美術・アート イラストのグリザイユ法の描き方について。 グリザイユ法は必ず線画は消さなければいけないのでしょうか? 2 2022/09/02 07:24
- CAD・DTP JWW-CADでDXF変換後の線が連動して消える 2 2023/01/13 11:09
- Illustrator(イラストレーター) 「頂点で線分を伸ばす」作業がうまく行かない。 1 2022/09/09 10:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
VC++ ドラッグしながらの図の...
-
VB.netで図形描画ができません^^;
-
画面に絵を出す方法
-
図の削除直後の再描画
-
PowerPoint の VBA
-
win32api複数のタイマーを同時...
-
立方体をくるくる回転させるプ...
-
円の頂点の求め方を知りたいです。
-
給紙トレイをダイアログを使わ...
-
c言語 ちらつき
-
VB .net Form_Load時、または関...
-
PictureBoxのダブルバッファリ...
-
実行時エラー 438になった時の...
-
VBA シートのボタン名を変更し...
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
【C#/Java?】try-catchでcatch...
-
ユーザーフォームを表示中にシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
給紙トレイをダイアログを使わ...
-
C#を用いて描画する四角形の角...
-
vb6のTEXTBOX
-
PowerPoint の VBA
-
for文の実行速度を遅くしたいの...
-
win32api複数のタイマーを同時...
-
MFCでのコンボボックスについて
-
VB.netで図形描画ができません^^;
-
花火のアルゴリズム
-
図の削除直後の再描画
-
円の頂点の求め方を知りたいです。
-
C# DrawImage 物理サイズでな...
-
VB.NETでグラフィックを描くと...
-
PictureBoxのダブルバッファリ...
-
色を合成するには
-
C++/CLIを用いて画像をクリップ...
-
【Delphi】 Canvasへの描画につ...
-
エクセルのレーダーチャート 0...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報