【发布时间】:2011-06-07 02:23:14
【问题描述】:
我有一张通过多次平铺同一图形创建的位图。创建位图时,它会根据特定标准为图块着色。
加载位图后,我想为用户提供基于进一步预定义标准更改图块颜色的选项。因此,我是否需要丢弃当前位图,使用新颜色再次生成并附加到面板。或者我可以遍历每个图块的位图并以这种方式更改颜色吗?
谢谢。
【问题讨论】:
我有一张通过多次平铺同一图形创建的位图。创建位图时,它会根据特定标准为图块着色。
加载位图后,我想为用户提供基于进一步预定义标准更改图块颜色的选项。因此,我是否需要丢弃当前位图,使用新颜色再次生成并附加到面板。或者我可以遍历每个图块的位图并以这种方式更改颜色吗?
谢谢。
【问题讨论】:
这取决于用户更改磁贴颜色的频率。如果他们不经常这样做,那么生成新位图可能更容易(主要是因为您的代码似乎针对这种情况进行了优化)。
然而,更好的性能可能是使用 Bitmap.LockBits/UnlockBits 方法获取位图中的像素数据,然后直接操作像素数据。有关如何执行此操作的示例,请参阅有关 Bitmap.LockBits 方法的 MSDN 文档 (http://msdn.microsoft.com/en-us/library/5ey6h79d.aspx)。
【讨论】:
据我所知,您可以通过位图更改颜色的唯一方法是逐个像素地进行,所以我认为您最好的方法是在用户选择新颜色时从头开始生成位图。
【讨论】: