首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

求图片按兑现设定的模板合成新的图片的解决思路

2013-01-04 
求图片按实现设定的模板合成新的图片的解决思路没做过图像处理方面的东西。现在有这样一个需求: 选好一张图

求图片按实现设定的模板合成新的图片的解决思路
没做过图像处理方面的东西。
现在有这样一个需求: 选好一张图片,想按照实现做成的一些模板,模板用来设定选好的图片哪些区域不被打印出来。
现在我知道打印机对白色是不打印的,所以想把不要打印的区域用模板把该区域涂成白色的。 其他要打印的区域不弄成白色的。
我想:如果能读到模板图片中哪些区域是白色,就把要打印的图片的对应部分给弄成白色的。然后生成新的图片,对新的图片进行打印 。 这只是我的想法 ,具体如何实现,不知道在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

热点排行