想在.net cf 的winform程序里做半透明的控件,实时使用LockBits直接进行内存运算,但是效果不好,运算一个30*30的图像都需要140-160ms之间,若我们N个这样的按扭,那程序就很慢了,请问,有没有更快的方法?或是别的实现半透明按扭的方法?谢谢!{ Rectangle rect = new Rectangle(0, 0, img.Width, img.Height);
BitmapData bd =
img.LockBits(rect, ImageLockMode.ReadOnly,
pxf); m_Image = (Bitmap)m_TmpImg.Clone();
BitmapData bkBD = m_Image.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
byte* pbd = (byte*)bd.Scan0.ToPointer() + bd.Stride * Top + Left * 3;
byte* pbk = (byte*)bkBD.Scan0.ToPointer();
for (int h = 0; h < Height; h++)
{
for (int w = 0; w < Width; w++)
{
if (pbk[0] != 0 && pbk[1] != 0 && pbk[2] != 0)
{
pbk[0] = (byte)((pbd[0] + pbk[0]) >> 1);
pbk[1] = (byte)((pbd[1] + pbk[1]) >> 1);
pbk[2] = (byte)((pbd[2] + pbk[2]) >> 1);
}
else
{
pbk[0] = pbd[0];
pbk[1] = pbd[1];
pbk[2] = pbd[2];
}
pbk += 3;
pbd += 3;
}
pbk += bkBD.Stride - Width * 3;
pbd += bd.Stride - Width * 3;
}
}
img.UnlockBits(bd);
m_Image.UnlockBits(bkBD);
BitmapData bd =
img.LockBits(rect, ImageLockMode.ReadOnly,
pxf); m_Image = (Bitmap)m_TmpImg.Clone();
BitmapData bkBD = m_Image.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe
{
byte* pbd = (byte*)bd.Scan0.ToPointer() + bd.Stride * Top + Left * 3;
byte* pbk = (byte*)bkBD.Scan0.ToPointer();
for (int h = 0; h < Height; h++)
{
for (int w = 0; w < Width; w++)
{
if (pbk[0] != 0 && pbk[1] != 0 && pbk[2] != 0)
{
pbk[0] = (byte)((pbd[0] + pbk[0]) >> 1);
pbk[1] = (byte)((pbd[1] + pbk[1]) >> 1);
pbk[2] = (byte)((pbd[2] + pbk[2]) >> 1);
}
else
{
pbk[0] = pbd[0];
pbk[1] = pbd[1];
pbk[2] = pbd[2];
}
pbk += 3;
pbd += 3;
}
pbk += bkBD.Stride - Width * 3;
pbd += bd.Stride - Width * 3;
}
}
img.UnlockBits(bd);
m_Image.UnlockBits(bkBD);
解决方案 »
- WPF中如何通过颜色代码改变按钮颜色
- 我想问个问题,做B/S结构用到技术多,还是做C/S结构用到的技术多呢
- 用C#.net开发的智能项目程序如何安装到智能手机中去啊?
- ClickOnce 高手帮忙!
- 急等关于字符串编码问题
- C#中能定义字符串数组常量吗????(急!在线等,搞明白就给分)
- 如何在winform下嵌入简单的网页
- 应用层只传参数下去,然后在逻辑层进行数据的捆绑,是不是专门有一个术语的啊?叫什么啊?一下想不起来了
- 请问如何提取一个字符串中的某些内容并保存到数组中
- .net界面问题!
- winform App 调用 webservice(外网调用模式,实际应用在同一局域网)报“无法创建文件或目录”
- 求助:随意grideview中的记录顺序
关注