求图片按实现设定的模板合成新的图片的解决思路解决思路
求图片按实现设定的模板合成新的图片的解决思路
没做过图像处理方面的东西。
现在有这样一个需求: 选好一张图片,想按照实现做成的一些模板,模板用来设定选好的图片哪些区域不被打印出来。
现在我知道打印机对白色是不打印的,所以想把不要打印的区域用模板把该区域涂成白色的。 其他要打印的区域不弄成白色的。
我想:如果能读到模板图片中哪些区域是白色,就把要打印的图片的对应部分给弄成白色的。然后生成新的图片,对新的图片进行打印 。 这只是我的想法 ,具体如何实现,不知道在vb中有哪些绘图之类的api或方法可以使用。
谢谢。多谢大家提供代码或思路。
------解决方案--------------------
这个是图片透明叠加的问题,你可以参考http://www.cngr.cn/article/54/395/2006/2006071931035.shtml 的代码。
------解决方案--------------------
没做过图像处理方面的东西。
现在有这样一个需求: 选好一张图片,想按照实现做成的一些模板,模板用来设定选好的图片哪些区域不被打印出来。
现在我知道打印机对白色是不打印的,所以想把不要打印的区域用模板把该区域涂成白色的。 其他要打印的区域不弄成白色的。
我想:如果能读到模板图片中哪些区域是白色,就把要打印的图片的对应部分给弄成白色的。然后生成新的图片,对新的图片进行打印 。 这只是我的想法 ,具体如何实现,不知道在vb中有哪些绘图之类的api或方法可以使用。
谢谢。多谢大家提供代码或思路。
------解决方案--------------------
这个是图片透明叠加的问题,你可以参考http://www.cngr.cn/article/54/395/2006/2006071931035.shtml 的代码。
------解决方案--------------------
- VB code
'窗体上放 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