-2

我正在制作一个程序来自动对图像执行某些编辑。

其中一项功能是将“白色”像素转换为“白色”和透明的。最初,一切都很好。

我设法将 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。

如果可能的话,尽量让解释简单。我在这方面是一个相当新的人。谢谢你的时间。

4

1 回答 1

1

是一个带有示例的小技巧,如何轻松使用位图。

ps之间的区别:

for(int i = 0; i < (x + 1); i += y)

for(int i = 0; i <= (x); i += y)

取决于y值。

于 2012-04-18T11:20:33.730 回答