请教:用LineTo画出的线该怎样删除呢?

BlueBeer 2004-04-24 07:04:22
例如:

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Private Sub Command1_Click()
Call LineTo(GetDC(0), 400, 300)
End Sub

请赐教,谢谢~
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueBeer 2004-04-26
  • 打赏
  • 举报
回复
晕死了,怎么弄都搞不定,放弃,换别的思路搞了,结帐~

谢谢楼上各位~
nik_Amis 2004-04-26
  • 打赏
  • 举报
回复
异或擦
kmzs 2004-04-26
  • 打赏
  • 举报
回复
Cls不久都没了,不行。。。
huwei001982 2004-04-26
  • 打赏
  • 举报
回复
你是要在屏幕畫嗎?

screenDC = GetDC(0)
SetROP2(screenDC, R2_NOT)
'畫線
MoveTo();
LineTo();
'擦掉剛才的線,也就是直接叫上面的語句再運行一次
MoveTo();
LineTo();

'別忘了釋放資源
ReleaseDC(0, screenDC)
BlueBeer 2004-04-25
  • 打赏
  • 举报
回复
嘿嘿,楼上的耍赖~:)

我是想请教该用什么API清除用LineTo画出的线
由于LineTo是画在一个设备场景上的(像上面的例子里,我用整个屏幕做为设备场景画线),
我用了几个清除设备场景的API,结果都不奏效

请看下面的例子:

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
Dim p As POINTAPI
GetCursorPos p
Call LineTo(GetDC(0), p.X, p.Y)
End Sub

我想做的就是画第二条线时同时能把第一条线删除掉
不像现在这样最终会把屏幕全画黑:)
BlueBeer 2004-04-25
  • 打赏
  • 举报
回复
不管,搞不定,楼上是否可以赐教代码?
pigpag 2004-04-25
  • 打赏
  • 举报
回复
将桌面重新画一遍

单单删掉是不可能的,只有将背景重新画一边

也可以用XOR画笔话,那样删除只要再在原处画一遍就可以了。


设置DC的作图模式可以用SetROP2函数
northwolves 2004-04-25
  • 打赏
  • 举报
回复
清空窗体:

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Dim w As Long, h As Long, l As Long, t As Long
Private Sub Command1_Click()
Call LineTo(GetDC(0), 400, 300)
w = Me.Width
h = Me.Height
l = Me.Left
t = Me.Top
End Sub

Private Sub Command2_Click()
On Error Resume Next
Me.Move 0, 0, Screen.Width, Screen.Height
Me.Cls
Me.Move l, t, w, h
End Sub
BlueBeer 2004-04-24
  • 打赏
  • 举报
回复
楼上的,你试过了吗?
leiatcsdn 2004-04-24
  • 打赏
  • 举报
回复
用背景色沿原路徑再畫一條綫,不就相當於擦了嗎?

1,485

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧