关于C#Alpha图像混合问题

wulin900515 2012-03-18 11:23:15
在网上搜索了好久关于Alpha图像混合文章,但讲解都是基于C/C++,我也想原理大概都应该是互通的,可有些问题还是不太明白
首先网上的文章的介绍,关于alpha混合都是针对于某一个像素点,首先选定某一个像素点,得到该点的ARGB值然后通过一个公式:
DstColor.b=(DstColor.b*(255-Alpha) + SrcColor.b*Alpha)/255;
计算出该点混合后的A,R,G,B值,在重新绘制在图像上,然后再针对该算法进行优化

可是C#如何取得某一像素点的ARGB值,然后在将该混合后的AGRB绘制在图像上呢,这点应该和C++或者C的Alpha处理有些区别吧。
然后就是我每次都是针对图像1进行固定大小的Bitmap裁剪,想把裁剪后的图像绘制到图像2上,但这样裁剪会把图像1中的背景色(如白色或者其他的颜色)也裁剪进来,网上倒是有种针对性方法,在图像1中的背景色使用在图像中不存在的颜色,然后再裁剪时将背景颜色过滤,但这个过滤也需要一个一个像素点的过滤吧

所以综上问题的关键:在C#中如何操控图像的某一个像素点,或者我上面的理解错误还有其他的正确方法
...全文
243 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wulin900515 2012-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 crackdung 的回复:]

怎麼不用專業控件

http://ufo-crackerx.blog.163.com/blog/static/113078778201111158561961/
[/Quote]
你这专业控件还要收费啊 ?
wulin900515 2012-03-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gomoku 的回复:]

图像1要事先进行Alpha处理,该处理可以是人工调整,也可以是电脑智能调整。

人工调整,就是用图像处理工具,把你认为‘背景色’的地方变透明。
而智能调整,就是写一段程序,由程序进行‘背景色’判断,并相应进行Alpha调整。
[/Quote]

这个Alpha如何调整呢
gomoku 2012-03-18
  • 打赏
  • 举报
回复
图像1要事先进行Alpha处理,该处理可以是人工调整,也可以是电脑智能调整。

人工调整,就是用图像处理工具,把你认为‘背景色’的地方变透明。
而智能调整,就是写一段程序,由程序进行‘背景色’判断,并相应进行Alpha调整。
crackdung 2012-03-18
  • 打赏
  • 举报
回复
gomoku 2012-03-18
  • 打赏
  • 举报
回复
设置Alpha本身很容易,比较困难的是‘背景色’的判断。当然如果背景色恰巧都是白色,倒是很容易:

Color color = bmp.GetPixel(x, y);
if( color.R == 255 && color.G == 255 && color.B == 255)
{
bmp.SetPixel(x, y, Color.Transparent);
}

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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