gdi的问题。。。
我用getdc和moveto,lineto在屏幕上画线,可画出来的都是黑线,怎么改颜色呢?还有线的粗细程度 你要创建一个画笔,先CreatePen,指定样式,粗细和颜色.然后再用SelectObject选到你得到的那个DC中去.
再调用LineTo画图,就OK了. Option Explicit
Private Const PS_SOLID As Long = 0
Private Const PS_DASH As Long = 1 'nWidth必须是1
Private Const PS_DOT As Long = 2 'nWidth必须是1
Private Const PS_DASHDOT As Long = 3 'nWidth必须是1
Private Const PS_DASHDOTDOT As Long = 4 'nWidth必须是1
Private Const PS_NULL As Long = 5
Private Const PS_INSIDEFRAME As Long = 6
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject 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 Form_Load()
Me.ScaleMode = vbPixels
End Sub
Private Sub Form_Resize()
Form_Paint
End Sub
Private Sub Form_Paint()
Dim hPen As Long, I As Long, J As Long, K As Long
Me.Cls
hPen = CreatePen(PS_DASHDOTDOT, 1, vbBlue)
DeleteObject SelectObject(Me.hdc, hPen)
For K = 0 To 100
I = Int(Rnd(1) * 300)
J = Int(Rnd(1) * 310)
LineTo Me.hdc, I, J
Next
DeleteObject hPen
End Sub 马大哈 发表于 2011-9-19 00:07 static/image/common/back.gif
嘿嘿。有空试试。
谢谢了~ 马大哈 发表于 2011-9-19 00:07 static/image/common/back.gif
嘿嘿。有空试试。
谢谢了~ 马大哈 发表于 2011-9-19 00:07 static/image/common/back.gif
Option Explicit
Private Const PS_SOLID As Long = 0
Private Const PS_DASH As Long = 1 'nWidth必须是1
Private Const PS_DOT As Long = 2 'nWidth必须是1
Private Const PS_DASHDOT As Long = 3 'nWidth必须是1
Private Const PS_DASHDOTDOT As Long = 4 'nWidth必须是1
Private Const PS_NULL As Long = 5
Private Const PS_INSIDEFRAME As Long = 6
Dim P
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject 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 GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
a
End Sub
Private Sub Form_Load()
Me.ScaleMode = vbPixels
P = GetDC(0)
End Sub
Private Sub a()
Dim hPen As Long, I As Long, J As Long, K As Long
Me.Cls
hPen = CreatePen(PS_DASHDOTDOT, 1, vbBlue)
DeleteObject SelectObject(Me.hdc, hPen)
For K = 0 To 100
I = Int(Rnd(1) * 300)
J = Int(Rnd(1) * 310)
'MsgBox Me.hdc
LineTo P, I, J
Next
DeleteObject hPen
End Sub
为什么改成屏幕的DC就又是黑色的呢?
请教 yxd199512041 发表于 2011-9-24 16:47 static/image/common/back.gif
Option Explicit
DeleteObject SelectObject(Me.hdc, hPen)
你把创建的画笔选到窗体的DC了.
应该选到桌面的DC去. 马大哈 发表于 2011-9-26 16:10 static/image/common/back.gif
DeleteObject SelectObject(Me.hdc, hPen)
你把创建的画笔选到窗体的DC了.
:L失误了。。。 粗心孩子............. 屏幕画图???话说我也正在学习Gdi+ 写控件呢!
页:
[1]