求图片按实现设定的模板合成新的图片的解决思路
没做过图像处理方面的东西。
现在有这样一个需求: 选好一张图片,想按照实现做成的一些模板,模板用来设定选好的图片哪些区域不被打印出来。
现在我知道打印机对白色是不打印的,所以想把不要打印的区域用模板把该区域涂成白色的。 其他要打印的区域不弄成白色的。
我想:如果能读到模板图片中哪些区域是白色,就把要打印的图片的对应部分给弄成白色的。然后生成新的图片,对新的图片进行打印 。 这只是我的想法 ,具体如何实现,不知道在vb中有哪些绘图之类的api或方法可以使用。
谢谢。多谢大家提供代码或思路。
[解决办法]
这个是图片透明叠加的问题,你可以参考http://www.cngr.cn/article/54/395/2006/2006071931035.shtml 的代码。
[解决办法]
'窗体上放 3 个 PictureBox'
Option Explicit
Private Sub InvertTemplate()
With Picture2
.DrawMode = vbInvert
Picture2.Line (0, 0)-(.ScaleWidth, .ScaleHeight), &HFFFFFF, BF
End With
End Sub
Private Sub Form_Load()
Dim i As Long
Dim w As Single
'图片'
Randomize
With Picture1
.Move 0, 0, (ScaleWidth / 3), ScaleHeight
.ScaleMode = vbPixels
.AutoRedraw = True
.BackColor = vbWhite
.Cls
For i = 0 To 100
.ForeColor = &HFFFFFF * Rnd()
Picture1.Circle (.ScaleWidth * Rnd(), .ScaleHeight * Rnd()), 10
Next
End With
'模板'
With Picture2
.Move (ScaleWidth / 3), 0, (ScaleWidth / 3), ScaleHeight
.ScaleMode = vbPixels
.AutoRedraw = True
.BackColor = vbWhite
.Cls
.ForeColor = vbBlack
w = .ScaleWidth / 10
For i = 0 To 9 Step 2
Picture2.Line (i * w, 0)-((i + 1) * w, .ScaleHeight), , BF
Next
End With
'输出'
'a = 图片颜色'
'b = 模板颜色(白色清除、黑色保留)'
'c = ((a Xor &HFFFFFF) And (Not b)) Xor &HFFFFFF
With Picture3
.Move (ScaleWidth / 3) * 2, 0, (ScaleWidth / 3), ScaleHeight
.ScaleMode = vbPixels
.AutoRedraw = True
.PaintPicture Picture1.Image, 0, 0
.DrawMode = vbXorPen
Picture3.Line (0, 0)-(.ScaleWidth, .ScaleHeight), &HFFFFFF, BF
InvertTemplate
.PaintPicture Picture2.Image, 0, 0, , , , , , , vbSrcAnd
InvertTemplate
.DrawMode = vbXorPen
Picture3.Line (0, 0)-(.ScaleWidth, .ScaleHeight), &HFFFFFF, BF
End With
End Sub