绑定,我想不出更好的办法,出了每个像素对比之外另外本身大点的图片就算在windows下直接开打需要的时间都很长,我觉得这个是没办法避免的,否则3D中的渲染也就不那么耗费时间了
解决方案 »
- C#设置一个事件的响应时间不能超过特定时间
- 在一个窗体上,用GDI+显示了一图片,还有一个工具栏,当图片大于窗体大小时,拖动滚动条后,工具栏也跟着一起滚动?如何让工具栏不动?
- 关于图标修改
- 一个简单的Ajax问题
- 关于多个页面和类的错误处理问题!
- 高手:ListView 的效果如何处理可以做成Media Player那样子的,点击后,选项可以进入编辑模式?
- 因一个网页只能放一个服务器表单而引出的问题????
- 怎样使用crystalReportViewer实现直接打印,操作打印机参数和纸张大小参数?
- 求助 C# 中如何把一个界面类当成一个控件来使用
- 谁有关于介绍c#函数的用法资料呢?
- 如何得到类中的属性生成表的列?
- 【请教】TCP连接出现“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”错误
对r = Convert.ToInt32(c1.R) - 50 >= 0 ? Convert.ToInt32(c1.R) - 50 : 0;等使用位运算代替转换和条件判断
{
if (b1.Width != b2.Width || b1.Height != b2.Height)
return null; var fmt = PixelFormat.Format32bppArgb;
var result = new Bitmap(b1);
var rect = new Rectangle(0, 0, b1.Width, b1.Height);
BitmapData d1 = null, d2 = null;
try
{
d1 = result.LockBits(rect, ImageLockMode.ReadWrite, fmt);
d2 = b2.LockBits(rect, ImageLockMode.ReadOnly, fmt);
UnsafeBitmapCompare(d1.Scan0, d2.Scan0, d1.Height * d1.Stride);
}
finally
{
if (d1 != null)
result.UnlockBits(d1);
if (d2 != null)
b2.UnlockBits(d2);
}
return result;
}private unsafe void UnsafeBitmapCompare(IntPtr dest, IntPtr src, int length)
{
var dp = (uint*)dest; var sp = (uint*)src;
var end = dp + length / 4;
while (dp < end)
{
if (*dp == *sp || ((*dp >> 24 == 0) && (*sp >> 24 == 0)))
{
var r = (int)((*dp >> 16) & 0xFF) - 50;
var g = (int)((*dp >> 8) & 0xFF) - 50;
var b = (int)(*dp & 0xFF) - 50;
r = r > 0 ? r : 0; g = g > 0 ? g : 0; b = b > 0 ? b : 0;
*dp = (*dp & 0xFF000000) | (uint)(r << 16) | (uint)(g << 8) | (uint)b;
}
else
*dp = 0xFFFF0000; dp++; sp++;
}
}