用户:  密码: 记住我     找回密码 
| 文章 >> 多媒体 >> 普通图形技术

做一个透明位图纹理画笔或混合两个位图

日期 | 作者dmm12 | 浏览86 | 评分100 | 标签普通图形技术 评论
简介
我搜索了很多,一个简单的方法来合并两个位图使用。NET代码。我总是得到发还GDI的BitBlt,这是不友善。NET样式图像。或管理alpha通道。我想我错过了什么... ...?最后,我设计了一个简单的方法适用于任何。NET位图变量的透明度。实际上这并不在真正意义上的两个位图之间的混合颜色,但设置位图,它的透明度百分比应用于位图B,剂量一个不错的工作纹理画笔时使用。
指定正确的矩形,将允许典型的覆盖。这个例子砖覆盖,当您查看屏幕2。这是使用此刷,这是这里没有显示的代码。此代码表示为白色透明度。此代码允许你混合管理alpha通道的位图。
混乱,不保留16万的Windows颜色设置透明色。 Bitmap.MakeTransparent允许您指定的透明色。此代码将分配在一个很好的混合透明的颜色。
这段代码很容易,工程迅速。只要使用此代码作为与bitmap.maketransparency纹理画笔(system.drawing.color.white)位图。
Public Sub SetAlphaVary(ByRef abm As Image)

' This code is from DesignLab(C)2007 author Dominic J. Melfi

' It may be used freely as long as the above line is included

=====================================================



' abm is passed as the "Source Image"



' size of source 



Dim r1 As RectangleF

r1.X = 0

r1.Y = 0

r1.Width = abm.Width

r1.Height = abm.Height



'

' Set brush into graphics context

graphics1.Dispose()

graphics1 = Graphics.FromImage(abm)



' Dim Path

Dim path1 As New System.Drawing.Drawing2D.GraphicsPath

path1.FillMode = Drawing2D.FillMode.Alternate

path1.AddRectangle(r1)



'Dim brush

' mainform.alphapercent.text argument is 6-17 code for hatch percent

' we are establishing the percent of transparency for our overlay

' actually you cold use any of 52 hatch codes 6-17 are without pattern, 

' and represent a percent



' the forecolor is white, and white will be used as transparent color 

' when this brush is overlayed

' you could pass the transparent color from the other bitmap

' and the backcolor is transparent which retains origional for these pixels



Dim brush3 As New Drawing2D.HatchBrush _

(CInt(getarg2(MainForm.AlphaPercent.Text, "code")), _

System.Drawing.Color.White, System.Drawing.Color.Transparent)



graphics1.FillPath(brush3, path1)

brush3.Dispose()

path1.Dispose()



' the end result here is you have a brush with a percent of white, 

' this is added to any existing white



' that there was, when using this brush declare

' image.maketransparent=system.drawing.color.white



End Sub

下面的图片是从我的项目DesignLab(C)2007。该方案可以管理位图可达7200x7200,并已用于打印出设计大如56quot; x17quot;我Epson7800。我们有印刷设计,以丝绸,丝巾等。

{A1}
关于作者:dmm12


中国
我是一名编程爱好者,
谢谢orcode.com为我们提供一个学习和分享的平台。
有什么问题。可以就本内容回复,我看到时。会尽量回复的。
评论会员:dherrmann 时间:2011/12/07
?你为什么不回答我的第一个线程

我觉得你的"代码"需要一些更好的描述,它应该如何真正功能。

所以,请....做到这一点。
评论会员:dherrmann 时间:2011/12/07
喂,
VB2005 Express Edition的模块,我抄你的代码。
但它表明了两个错误:
绘图1 ... getarg2(MainForm. ..

你能告诉我,我必须做什么,这个程序的功能呢?
(进口,定义对象或左右)


迪特里希
从奥地利

 文章分类
 桌面
 网页开发
 移动开发
 数据库
 多媒体
 编程语言
 平台,框架和库
 编程通用
 图形/设计
 开发周期
 一般阅读
 第三方产品
 作者资源
 其他
快速解答标签
c x 6850
VC x 7405