假设我有一个32bppARGB模式的System.Drawing.Bitmap。这是一个大位图,但它主要是完全透明的像素,中间某处有一个相对较小的图像。什么是检测“真实”图像边界的快速算法,以便我可以裁剪掉图像周围的所有透明像素?或者,.Net中是否已有我可以用于此目的的函数? 最佳答案 基本思想是检查图像的每个像素以找到图像的上、左、右和下边界。要有效地执行此操作,请不要使用非常慢的GetPixel方法。请改用LockBits。这是我想出的实现:staticBitmapTrimBitmap(Bitmapsource){Rectan
我有这段代码,可以绘制图像。privatevoidtimer1_Tick(objectsender,EventArgse){Invalidate();}protectedoverridevoidOnPaint(PaintEventArgse){vartempRocket=newBitmap(Properties.Resources.rocket);using(varg=Graphics.FromImage(tempRocket)){e.Graphics.DrawImage(tempRocket,150,150);}}但是我该怎么做才能旋转它呢? 最佳答案
我有一个带有主从View的应用程序。当您从“主”列表中选择一个项目时,它会使用一些图像(通过RenderTargetBitmap创建)填充“详细信息”区域。每次我从列表中选择不同的主项时,我的应用程序使用的GDI句柄数量(如ProcessExplorer中所报告)都会增加-并最终下降(或有时锁定)在10,000个GDI句柄处使用。我不知道如何解决这个问题,因此非常感谢任何关于我做错了什么的建议(或者只是关于如何获取更多信息的建议)。我在名为“DoesThisLeak”的新WPF应用程序(.NET4.0)中将我的应用程序简化为以下内容:在MainWindow.xaml.cs中public
我正在尝试编写一个轻量级的图像查看应用程序。但是,.NET存在系统内存限制。当尝试加载大型位图(9000x9000像素或更大,24位)时,出现System.OutOfMemoryException。这是在具有2GBRAM(其中1.3GB已用完)的Windows2000PC上运行的。尝试加载文件也需要很多时间。以下代码会产生此错误:Imageimage=newBitmap(filename);using(Graphicsgfx=this.CreateGraphics()){gfx.DrawImage(image,newPoint(0,0));}这段代码也是如此:Streamstream=
有没有办法在文本框中插入图像?我正在开发一个聊天应用程序。我想用图标图像更改值“:)”、“:(”等。但我找不到如何在文本框中插入图像?谢谢。 最佳答案 如果您使用RichTextBox进行聊天而不是查看Paste方法Bitmapbitmap=newBitmap();Clipboard.SetDataObject(bitmap);DataFormats.Formatformat=DataFormats.GetFormat(DataFormats.Bitmap);richTextBox.Paste(format);
我正在使用GDI+并创建一个新的位图,如下所示:varbmp=newBitmap(width,height);现在,当我观察它的RawFormat.Guid时,我发现它不同于所有预定义的ImageFormat(虽然我希望它是JPEG)。ImageFormat.Jpeg.Guid{b96b3cae-0728-11d3-9d7b-0000f81ef32e}format.Guid{b96b3caa-0728-11d3-9d7b-0000f81ef32e}有趣的是,如您所见,除了一个字符外,它们完全相同,这让我更加困惑。知道为什么吗?代码的哪些部分决定了我创建的位图的RawFormat是什么?
我很困惑System.Drawing.Image和System.Drawing.Bitmap之间有什么不同有人可以解释这两种类型之间的主要区别吗?为什么要使用System.Drawing.Bitmap而不是System.Drawing.Image? 最佳答案 Bitmap继承自Image:System.Drawing.Bitmap:System.Drawing.Image{}Image是一个抽象类,这意味着:Theabstractmodifierindicatesthatthethingbeingmodifiedhasamissin
我在.Net2.0中使用C#,我想读入PNG图像文件并检查具有非透明像素的第一行和第一列。我应该使用什么程序集和/或类? 最佳答案 Bitmap来自System.Drawing.dll程序集的类:Bitmapbitmap=newBitmap(@"C:\image.png");Colorclr=bitmap.GetPixel(0,0); 关于c#-在.Net2.0中读取PNG图像文件,我们在StackOverflow上找到一个类似的问题: https://sta
我已经进行了一些搜索,但找不到任何正在执行我希望它执行的操作的函数。我有一个带有文本的扫描文档的图像文件,但该文档旋转了一定程度,所以我想旋转它以使文本彼此对齐。在一个完美的世界里,它应该是一个自动执行此操作的功能,但我找不到任何东西,也找不到我所理解的让它自动工作的东西,它需要对图像进行一些分析,我认为这是一件大事。但后来我做了一个工具来手动旋转网站上的图像,但现在我需要一个将旋转保存到图像文件的功能。这似乎是一些不同的方法,但我没有测试过我想做什么。我发现的功能几乎和我想的一样:publicstaticBitmapRotateImg(Bitmapbmp,floatangle,Col
我正在尝试了解位图或图像的这两种方法。一个是.SetPropertyItem(),另一个是.GetPropertyItem()。我对文档所说的我要设置属性项的方式感到非常困惑。来自MicrosoftDocumentation它表明我们应该通过图像中已经存在的属性项的id选择一个属性项,为该属性项提供一个新的ID,设置属性,然后使用检索到的属性项设置图像属性项。这太奇怪了,但真正让我明白的是我们不能只将属性项的ID设置为任何ID我们必须将属性项ID设置为属性项ID列表中已经存在的ID.令人困惑的是,我正在使用一个已经通过其他方式设置的属性并覆盖它的属性,然后使用属性ID列表中的其他一些现