在网上搜索了好久关于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#中如何操控图像的某一个像素点,或者我上面的理解错误还有其他的正确方法
首先网上的文章的介绍,关于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#中如何操控图像的某一个像素点,或者我上面的理解错误还有其他的正确方法
解决方案 »
- 大家讨论一下对于下面的问题的两种回答是否都是正确的:
- 配置文件 数据库的相对路径
- c#重载运算符的问题
- 求类似于FreeTextBox类似的服务器端HTML编辑器控件
- ------自定义泛型类的问题???
- 换行问题
- 一个什么代码也没有的*.aspx空白页也能显示版权信息!(郁闷中!)
- 有关AssemblyInfo.cs的问题,高手进来看一看!!1
- DevExpress.XtraGrid.GridControl 显示图片列 不是从数据库读取 而是一个path 或者image
- 一个超级菜鸟的问题!关于字符串的截取
- 对于可访问域的概念有不太理解的地方。
- form窗体应用程序中 dataGridView中修改数据 怎么验证
而智能调整,就是写一段程序,由程序进行‘背景色’判断,并相应进行Alpha调整。
if( color.R == 255 && color.G == 255 && color.B == 255)
{
bmp.SetPixel(x, y, Color.Transparent);
}