找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 9532|回复: 9

[求助] gdi的问题。。。

 火.. [复制链接]

71

主题

350

回帖

2

精华

钻石会员

积分
4123
发表于 2011-9-18 17:45:49 | 显示全部楼层 |阅读模式
我用getdc和moveto,lineto在屏幕上画线,可画出来的都是黑线,怎么改颜色呢?还有线的粗细程度

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2011-9-18 23:57:04 | 显示全部楼层
你要创建一个画笔,先CreatePen,指定样式,粗细和颜色.

然后再用SelectObject选到你得到的那个DC中去.

再调用LineTo画图,就OK了.
我就是嗷嗷叫的老马了......

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2011-9-19 00:07:10 | 显示全部楼层
  1. Option Explicit

  2. Private Const PS_SOLID As Long = 0
  3. Private Const PS_DASH As Long = 1                   'nWidth必须是1
  4. Private Const PS_DOT As Long = 2                    'nWidth必须是1
  5. Private Const PS_DASHDOT As Long = 3                'nWidth必须是1
  6. Private Const PS_DASHDOTDOT As Long = 4             'nWidth必须是1
  7. Private Const PS_NULL As Long = 5
  8. Private Const PS_INSIDEFRAME As Long = 6

  9. Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
  10. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  11. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  12. Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

  13. Private Sub Form_Load()
  14.     Me.ScaleMode = vbPixels
  15. End Sub

  16. Private Sub Form_Resize()
  17.     Form_Paint
  18. End Sub

  19. Private Sub Form_Paint()
  20.     Dim hPen As Long, I As Long, J As Long, K As Long
  21.    
  22.     Me.Cls

  23.     hPen = CreatePen(PS_DASHDOTDOT, 1, vbBlue)
  24.    
  25.     DeleteObject SelectObject(Me.hdc, hPen)
  26.    
  27.     For K = 0 To 100
  28.         I = Int(Rnd(1) * 300)
  29.         J = Int(Rnd(1) * 310)
  30.         
  31.         LineTo Me.hdc, I, J
  32.     Next
  33.    
  34.     DeleteObject hPen
  35. End Sub
复制代码
我就是嗷嗷叫的老马了......

71

主题

350

回帖

2

精华

钻石会员

积分
4123
 楼主| 发表于 2011-9-22 17:39:12 | 显示全部楼层
马大哈 发表于 2011-9-19 00:07

嘿嘿。有空试试。
谢谢了~

71

主题

350

回帖

2

精华

钻石会员

积分
4123
 楼主| 发表于 2011-9-22 17:39:13 | 显示全部楼层
马大哈 发表于 2011-9-19 00:07

嘿嘿。有空试试。
谢谢了~

71

主题

350

回帖

2

精华

钻石会员

积分
4123
 楼主| 发表于 2011-9-24 16:47:40 | 显示全部楼层
马大哈 发表于 2011-9-19 00:07

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就又是黑色的呢?
请教

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2011-9-26 16:10:15 | 显示全部楼层
yxd199512041 发表于 2011-9-24 16:47
Option Explicit

DeleteObject SelectObject(Me.hdc, hPen)

你把创建的画笔选到窗体的DC了.

应该选到桌面的DC去.
我就是嗷嗷叫的老马了......

71

主题

350

回帖

2

精华

钻石会员

积分
4123
 楼主| 发表于 2011-9-29 17:37:06 | 显示全部楼层
马大哈 发表于 2011-9-26 16:10
DeleteObject SelectObject(Me.hdc, hPen)

你把创建的画笔选到窗体的DC了.

:L失误了。。。

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2011-10-1 02:12:19 | 显示全部楼层
粗心孩子.............
我就是嗷嗷叫的老马了......

0

主题

11

回帖

0

精华

铜牌会员

积分
237
发表于 2012-4-23 11:03:53 | 显示全部楼层
屏幕画图???话说我也正在学习Gdi+ 写控件呢!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表