[リストへもどる]
一括表示

投稿時間:2003/07/17(Thu) 10:42
投稿者名:ワニ丸
URL :
タイトル:
線を描画について
いつも勉強させてもらっています。

WinApiのLineToでピクチャーボックスに
線を描画しています。
描画した後に、ウィンドウを最小化したり、
他のウィンドウを重ねると、描画した線が
消えてしまいます。
消えないようにするのはどのようにしたら
いいのでしょうか?
よろしくお願いします。

投稿時間:2003/07/17(Thu) 11:12
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: 線を描画について
APIで描画したことがないのでよく分かりませんが、AutoRedrawプロパティはTrueになっていますか?

投稿時間:2003/07/17(Thu) 12:01
投稿者名:ワニ丸
URL :
タイトル:
Re^2: 線を描画について
> APIで描画したことがないのでよく分かりませんが、AutoRedrawプロパティはTrueになっていますか?

AutoRedrawプロパティをTrueに設定すると描画することができませんでした。
そこで最初はFalseで線を描画した後にTrueにすると線は描画されましたが、
画面の最小化などのタイミングで線は消えてしまいます。
ペン・ブラシの関係でAPIを使用しなければならず、どうにも困っています。
よろしくお願いします。

投稿時間:2003/07/17(Thu) 12:39
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 線を描画について
描画後 Picture1.Refresh を実行して下さい。

Option Explicit
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub Command1_Click()
    With Picture1
        .AutoRedraw = True
        .ScaleMode = vbPixels
    End With
    LineTo Picture1.hdc, 100, 100
    Picture1.Refresh
End Sub

投稿時間:2003/07/17(Thu) 13:12
投稿者名:ワニ丸
URL :
タイトル:
Re^4: 解決しました。
> 描画後 Picture1.Refresh を実行して下さい。
>
> Option Explicit
> Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
> Private Sub Command1_Click()
>     With Picture1
>         .AutoRedraw = True
>         .ScaleMode = vbPixels
>     End With
>     LineTo Picture1.hdc, 100, 100
>     Picture1.Refresh
> End Sub

上記のように実行したところ、解決いたしました。
ありがとうございました。

投稿時間:2003/07/17(Thu) 14:20
投稿者名:Say
Eメール:
URL :
タイトル:
Re^5: 参考までに
参考までに

AutoRedraw = False のままで、

Paint イベントプロシージャ内に描画コードを
記述する、という方法もあります。