关于VB橡皮擦功能

soft2buy 2009-07-08 10:43:15
请教各位高手:

我用VB6.0 做了一个form,做成了全透明模式.我在上面画了很多的线条,form的背景图是一张有各种颜色的图片.
现在我想开发橡皮擦功能,参考了网上VB做橡皮擦的解决办法,都是建议使用背景色来画线来实现擦除的目的;而我这种情况是无法使用的,因为如果用背景色,就会在背景图上画出背景色的线条.请问有什么好的解决办法吗?

...全文
304 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2009-07-24
  • 打赏
  • 举报
回复
用背景图的一小部分 PaintPicture。
贝隆 2009-07-24
  • 打赏
  • 举报
回复
学习
qiu5208 2009-07-24
  • 打赏
  • 举报
回复
复制一张背景图存到内存,

擦除时
用bitblt函数把背景图再涂上,不 就是橡皮擦了.
我是一道光_ 2009-07-19
  • 打赏
  • 举报
回复
其实大范围的可以 使用清屏

就是用一个矩阵,进行颜色覆盖
FngLng 2009-07-08
  • 打赏
  • 举报
回复
楼上的代码就可以,应该是截一个图,然后再动态擦除。
cdcjk 2009-07-08
  • 打赏
  • 举报
回复
学习一下
Tiger_Zhao 2009-07-08
  • 打赏
  • 举报
回复
通过 DrawMode 控制绘图方式。
Option Explicit

Private bOnDrag As Boolean
Private X1 As Long
Private Y1 As Long
Private X2 As Long
Private Y2 As Long

Private Sub Form_Load()
Me.ScaleMode = vbPixels
Me.AutoRedraw = True
Me.Line (50, 50)-(ScaleWidth - 50, ScaleHeight - 50), vbYellow, BF
Me.FillStyle = vbFSSolid
Me.FillColor = vbRed
Me.Circle (100, 100), 80, vbRed
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
X1 = X
Y1 = Y
X2 = X
Y2 = Y
Me.DrawMode = vbNotXorPen
Me.Line (X1, Y1)-(X2, Y2)
bOnDrag = True
End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If bOnDrag Then
Me.Line (X1, Y1)-(X2, Y2)
X2 = X
Y2 = Y
Me.Line (X1, Y1)-(X2, Y2)
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button = vbLeftButton) And bOnDrag Then
bOnDrag = False
Me.Line (X1, Y1)-(X2, Y2)
Me.DrawMode = vbCopyPen
Me.Line (X1, Y1)-(X2, Y2)
End If
End Sub
说明文档:制作类似windows画笔的程序 功能: 文件—— 新建 打开 保存 另存为 页面设置——画布大小变化 退出 编辑—— 剪切 复制 粘贴 删除选定区域(但是背景变成黑色的了?!) 查看—— 工具栏、状态栏、颜料盒的显示与隐藏 大尺寸、常规尺寸、自定义尺寸的缩放 图像—— 翻转功能实现(包括水平、垂直翻转,以及180度旋转,90与270度旋转理论上亦实现了,只是速度有些慢,只能适用于小图形) 图像反色 颜色—— 编辑颜色功能实现 帮助—— 弹出信息框 界面: 突出显示按件 鼠标移动显示坐标 使用铅笔在画布上任意绘画,且可以变化颜色 橡皮擦功能实现(橡皮擦大小的变化可以通过改变笔刷粗细后改变) 拾色器功能实现 油漆桶功能实现 直线、笔刷功能实现 屏幕输入文字 放大镜功能实现!!(——强烈注意:它又名奇异镜> <……即使用之后,所有画图功能(比如颜色反色出现,橡皮变成铅笔……填充的色块可以叠加……,O(∩_∩)O哈哈~所以使用之后,记得退出程序,重新开启……) 可以画空心或实心的矩形 可以画空心或实心的椭圆和圆 喷枪功能实现(只是在画笔变粗时,效果会有些恶心……,建议通过笔刷,选择1,然后使用) 另:支持各种快捷键,如ctrl+S/ctrl+x 等,详情请见菜单栏。 使用的API函数与ActiveX控件: API函数: GetCursorPos GetDC GetPixel RoundRect ActiveX控件: 通用对话框控件, 位于“Microsoft CommonDialog Control 6.0” 中

7,763

社区成员

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

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