各位大牛,想问一下,C#中图像的底片效果有没有什么加速方法,如果我的图片太大,加载速度明显变慢,下面是代码:
try
{
int Height = pictureBox1.Image.Height;
int Width = pictureBox1.Image.Width;
Bitmap oldBitmap = (Bitmap)pictureBox1.Image;
Bitmap newBitmap = new Bitmap(Width, Height);
Color pixel;
for (int i = 1; i < Width; i++) {
for (int j = 1; j < Height; j++) {
int r, g, b;
pixel = oldBitmap.GetPixel(i, j);
r = 255 - pixel.R;
g = 255 - pixel.G;
b = 255 - pixel.B;
newBitmap.SetPixel(i, j, Color.FromArgb(r, g, b));
}
}
ShowImage(newBitmap);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
//用于按pictureBox的大小显示图片,否则只能显示图片的一部分
private void ShowImage(Bitmap bitMap) {
if (bitMap != null)
{
Point location = new Point(bitMap.Size);
if (location.X > pictureBox1.Size.Width || location.Y > pictureBox1.Size.Height)
{
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
else
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
pictureBox1.Image = bitMap;
}
}大家看看有什么问题,或者哪里能够改进一下。感觉点了底片效果的按钮后过好长时间才能出来效果。
try
{
int Height = pictureBox1.Image.Height;
int Width = pictureBox1.Image.Width;
Bitmap oldBitmap = (Bitmap)pictureBox1.Image;
Bitmap newBitmap = new Bitmap(Width, Height);
Color pixel;
for (int i = 1; i < Width; i++) {
for (int j = 1; j < Height; j++) {
int r, g, b;
pixel = oldBitmap.GetPixel(i, j);
r = 255 - pixel.R;
g = 255 - pixel.G;
b = 255 - pixel.B;
newBitmap.SetPixel(i, j, Color.FromArgb(r, g, b));
}
}
ShowImage(newBitmap);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
//用于按pictureBox的大小显示图片,否则只能显示图片的一部分
private void ShowImage(Bitmap bitMap) {
if (bitMap != null)
{
Point location = new Point(bitMap.Size);
if (location.X > pictureBox1.Size.Width || location.Y > pictureBox1.Size.Height)
{
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
else
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
pictureBox1.Image = bitMap;
}
}大家看看有什么问题,或者哪里能够改进一下。感觉点了底片效果的按钮后过好长时间才能出来效果。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货