VB中多条橡筋线的画法的画法?

mtoad 2005-12-30 10:01:58
给出思路或代码!!?急
...全文
114 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyserver 2006-01-03
  • 打赏
  • 举报
回复
看了上面代码,感觉有一个缺点,就是速度太慢,有闪烁现象,最好采用WIN32API。
第一步:建立自己的位图CreateBitmap。
第二步:SetWindowLong,建立自己的窗体消息泵。
第三步:获得鼠标状态,如按键和位置,鼠标消息可以在自己的消息泵中处理,也可使用VB默认的过程来处理。。
第四步:根据鼠标状态绘制图形,MoveToEx,LineTo...
第五步:将绘制结果显示到窗体中BitBlt。
用API后,图形完全没有闪烁,由于我的机器上未装VB,所以不能给你全部代码,感兴趣可以再谈。
proer9988 2006-01-03
  • 打赏
  • 举报
回复
大家考虑过了吗,如何对画过的多条直线或是矩形进行删除、缩放、移动等操作?
rainstormmaster 2006-01-02
  • 打赏
  • 举报
回复
//这是画线吧。。。

画矩形的话,就改成这样:
Option Explicit
'显式声明模块中的所有变量
Dim mx As Single, my As Single, flag As Integer

'mx,my为线段的起点位置(x,y)
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mx = X
my = Y
flag = 1
Form1.MousePointer = 2
'定义鼠标指针为十字型指针
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If flag = 1 Then
Form1.Cls
Line (mx, my)-(X, Y), , B
'X,Y为线段的移动光标位置(X,Y)
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.AutoRedraw = True
flag = 0
Line (mx, my)-(X, Y), , B
Set Me.Picture = Me.Image
Form1.MousePointer = 0
Me.AutoRedraw = False
End Sub

rainstormmaster 2006-01-02
  • 打赏
  • 举报
回复
这样:
Option Explicit
'显式声明模块中的所有变量
Dim mx As Single, my As Single, flag As Integer

'mx,my为线段的起点位置(x,y)
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mx = X
my = Y
flag = 1
Form1.MousePointer = 2
'定义鼠标指针为十字型指针
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If flag = 1 Then
Form1.Cls
Line (mx, my)-(X, Y)
'X,Y为线段的移动光标位置(X,Y)
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.AutoRedraw = True
flag = 0
Line (mx, my)-(X, Y)
Set Me.Picture = Me.Image
Form1.MousePointer = 0
Me.AutoRedraw = False
End Sub
proer9988 2006-01-02
  • 打赏
  • 举报
回复
这是画线吧。。。
faysky2 2006-01-02
  • 打赏
  • 举报
回复
已测试

Dim XStart As Single, YStart As Single
Dim XOld As Single, YOld As Single

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
XOld = XStart
XOld = YStart
XStart = X
YStart = Y

DrawMode = 7
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
Line (XStart, YStart)-(XOld, YOld)
Line (XStart, YStart)-(X, Y)
XOld = X
YOld = Y
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button <> 1 Then Exit Sub
DrawMode = 13
Line (XStart, YStart)-(XOld, YOld)
Line (XStart, YStart)-(X, Y)
End Sub
proer9988 2006-01-02
  • 打赏
  • 举报
回复
异或画矩形

809

社区成员

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

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