我正在制作一个自动对图像进行某些编辑的程序。
其中一项功能是将“白色”像素转换为“白色”和透明。最初,一切都很顺利。
我设法将24bppRGB图像转换为32bppRGB图像,所需像素全部透明。
图片在图片框中加载,一旦保存就可以打开。
当我尝试重新编辑文件时出现问题。当我试图再次提取原始像素数据时,我什么也没得到。据我所知,整个像素数据数组是0。
为什么会这样?
^这是我的主要问题。 除了这个问题之外,我还注意到程序有一些怪癖,这些只是出于好奇:
有什么区别:
for(int i = 0; i < (x + 1); i += y)
和
for(int i = 0; i <= (x); i += y)
还有:
byte = 4;
for(int i = 0; i < x - byte; i += byte)
和
for(int i = 0; i < x - byte; i += 4)
当我解锁位图时,第二个引起了AccessViolationException。
如果可能,请尽可能简化说明。我是一个相当新的人。 谢谢你的时间。
答案 0 :(得分:1)
here是一个小小的提示示例,如何轻松使用位图。
P.S。区别:
for(int i = 0; i < (x + 1); i += y)
和
for(int i = 0; i <= (x); i += y)
取决于 y 值。