关于 PictureBox.PaintPicture 的问题

Tenner 2003-08-29 10:46:52
我用的 PictureBox 的 BackColor 是纯黑的,现在我想用 PaintPicture 在其上绘制图片,图片放在其它的 Image 控件中,我的问题是:如果能将要绘制的图片中的纯黑部分变为透明,即只把非纯黑部分绘制到到 PictureBox 上?
最好能给出代码,先谢谢了
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tenner 2003-09-01
  • 打赏
  • 举报
回复
问题解决了,使用 vbSrcPaint 就行了
保存时要用 SavePicture(Picture1.Image) 而不能用 SavePicture(Picture1.Picture)
goodname008 2003-08-30
  • 打赏
  • 举报
回复
兜了一大圈,我还是没明白你要做什么,呵呵。
你把Picture2中想去掉的颜色设成别的颜色不就行了吗?也就是只用一个Picture就行了啊?!
goodname008 2003-08-30
  • 打赏
  • 举报
回复
这样做好像不可以啊。 :(
tanyx 2003-08-30
  • 打赏
  • 举报
回复
恐怕遇到我的问题了,PAINT后的图片不可保存!保存的结果是没PAINT的。
Tenner 2003-08-29
  • 打赏
  • 举报
回复
请问这种方法可不可以用在当 Picture1 或 Picture2 不可见时?
我想让它在源与目标两个PictureBox都不可见的请问下进行,并且最后用 SavePicture(Picture1.Image) 来保存图形为文件,可以实现吗?
goodname008 2003-08-29
  • 打赏
  • 举报
回复
SetPixelV 比SetPixel稍微快一些.


SetPixelV

VB声明
Declare Function SetPixelV Lib "gdi32" Alias "SetPixelV" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
说明
在指定的设备场景中设置一个像素的RGB值
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hdc Long,一个设备场景的句柄
x,y Long,要设置的点,用逻辑坐标表示
crColor Long,指定像素的新RGB颜色值
注解
这个函数比SetPixel快一些,但不会返回设置的实际颜色。可用GetDeviceCaps判断设备是否支持这个函数

goodname008 2003-08-29
  • 打赏
  • 举报
回复
' 假设有两个PictureBox,Picture1的背景为黑色,Picture2中有一幅图片(含黑色)
' 单击按钮就OK了,两个PictureBox的大小最好一样。

Option Explicit
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long

Private Sub Command1_Click()
Dim i As Long, j As Long
Dim color As Long
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
For i = 1 To Picture2.ScaleHeight
For j = 1 To Picture2.ScaleWidth
color = GetPixel(Picture2.hdc, j, i)
If color <> 0 Then SetPixel Picture1.hdc, j, i, color
Next j
Next i
End Sub


这方面zyl910最在行了,我上面的代码可能并不是最好的代码(主要是效率方面)。

7,763

社区成员

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

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