gdi+相关内容
我的程序是用C#编写的,并且在低级使用位图进行操作.一切正常,但有时(非常少见,但稳定)例外发生“通用GDI +例外",并且很难重现这种情况. 函数LockBits()和UnLockBits()发生异常.它包含错误代码"-2147467259".在GDI +的语言上,它将是方法GdipBitmapLockBits并返回代码7或1. 什么样的原因可能导致这种情况? 任何答案都非常感
..
在某些特定情况下,System.Drawing.Save(Stream,Imageformat)创建损坏的PNG图像. 是否有避免这种情况的方法,例如: 我不需要使用第三方库,并且 我不需要检查PNG字节来知道是否需要“修复"某些东西? 复制步骤 创建一个System.Drawing.BitMap 向图像添加内容,以使其具有非常特定的PNG文件大小(“何时发生") 调
..
我创建了两个点,就像一条线.我想将其转换为矩形. 我该怎么办? 例如,这就是我画线的方式.但我希望它成为Rectangle private PointF start, end; protected override void OnMouseDown(MouseEventArgs e) { start.X = e.X; start.
..
获取系统的最佳方法是什么. Windows.Media.PixelFormats 值等于 System.Drawing.Imaging.PixelFormat 吗? 解决方案 这是一种转换方式,所以让我们从这里开始,看看是否有人可以顶这个可怕的东西.它们相互之间的映射很好,因此编写切换用例应该相当容易. private static System.Windows.Media.Pixe
..
我必须批量处理几张图像,我必须在特定点(X,Y)上放置一些文本.有一个自定义控件,该控件衍生自Picturebox,允许用户拖动文本并将其放置在所需的位置. 对于两种图像,我分别设置了PictureBoxSizeMode 垂直图像 我设置了PictureBoxSizeMode.Zoom; 水平 对于填充了我设置的PictureBox的水平图像> PictureBoxS
..
现在是2017年5月.我的老板要求我根据用户在浏览器中输入的文字来生成一些代码,以在我们的网站上制作一些自定义的网络图像. 服务器环境是运行IIS的Windows 2012,我对C#熟悉.从我的阅读中,我应该能够使用GDI +来创建图像,在其中绘制流畅的文本等. 但是,我的一位同事建议GDI +可能无法在Windows Server上运行,并且该GDI +基于较旧的32位GDI,因此将
..
因此,我试图将32x32的块恢复为透明,但是每次尝试将其设置为透明时,它只会保留已有的内容,我想将图像上的内容擦除为透明的,这是我尝试的代码 public Bitmap erase_tile(Bitmap bitmap, int x, int y) { Graphics device = Graphics.FromImage(bitmap);
..
我需要在Drawing.Font.Size(浮点数,?)和WPF FontSize(双倍,WPF像素)之间进行转换. 最后,我决定将字体大小以英寸为单位存储在数据库中. 如何将GDI字体大小转换为英寸,将WPF字体大小转换为英寸? sizeInInch = wpfFontSize / 96 sizeInInch = gdiFontSize / ? 我可以使用独立于DPI的东西
..
是否可以使用.NET通过jpeg压缩创建多页tiff? 我可以使用LZW压缩创建tiff,但是文件非常大.看起来EncoderValue枚举(我用来设置压缩)甚至没有合适的成员. 解决方案 您可以查看 >> ,,在这里我将说明如何将现有的JPEG包装在一个简单的多页TIFF容器中. 但是还有其他多种可能性. FreeImage.Net (freeimage.sourceforge.n
..
我需要使用c#(System.Drawings)将透明背景上带有绿色圆圈的图像加载到位图图像中. 那是容易的部分.但是,在将圆添加到较大图像之前,我需要先更改圆的颜色,而又不影响周围的透明度.就我而言,我需要将圆圈颜色更改为黄色,并将其添加为太阳. 我不能使用固定的黄色圆圈图像,因为所需的颜色是动态的. 因此在下面的代码中,如何在将图像添加到位图之前更改图像的颜色? Ima
..
来自Image.FromHbitmap()的文档,位于 http ://msdn.microsoft.com/zh-CN/library/k061we7x%28VS.80%29.aspx : FromHbitmap方法复制GDI位图.因此您可以在创建新图像后立即使用GDIDeleteObject方法释放传入的GDI位图. 这很明确地指出,一旦创建了位图实例,就可以立即使用DeleteO
..
我正在尝试创建一个控件,该控件基本上允许我在彼此之间绘制不同的字符串. 但是,字符串的宽度不能大于控件的宽度. 为了解决该问题,我正在考虑将RectangleF对象传递给Graphics.DrawString方法.这将包装比传递的矩形的宽度宽的字符串.尽管这确实解决了如果字符串太大则无法看到整个字符串的问题,但是还有另一个问题.如果我要尝试这样的事情 Graphics g = e.Graph
..
我需要将System.Drawing.Bitmap对象的DPI从默认值= 96更改为例如150.我找不到答案该怎么做,所以我在这里问:) 解决方案 Bitmap result = new Bitmap(width, height); result.SetResolution(dpi, dpi);
..
我当前正在更新一个上次用Visual Studio 2008编译的古老程序.我正在将它(.lib项目)更新到Visual Studio 2017,以获取最新的Windows sdk(10.0.15063.0),但是,gdiplus库抛出了一个错误.含糊不清的符号错误. 更具体地说: 3>c:\program files (x86)\windows kits\10\include\10.0.1
..
使用System.Drawing在ASP.NET应用程序中创建缩略图看起来非常容易.但是 MSDN会告诉您: 不支持在Windows或ASP.NET服务中使用System.Drawing命名空间中的类.尝试从这些应用程序类型之一中使用这些类可能会产生意外问题,例如服务性能下降和运行时异常. 我在这种GDI +代码中看到间歇性的“内存不足"错误.我开始怀疑这是原因. 人们如何进行服
..
在将字符串传递给Graphics.DrawString()之前,我想确切地知道每个字符的位置-不仅是偏移量和宽度,还包括它的精确的装订框,其中包含了上升/下降的数字,以便我可以在字符级别进行碰撞检测,而不是使用Graphics.MeasureString()给我的整个行高. 我似乎找不到任何可以准确返回每个字符边界框的示例.如何在c#/GDI +中完成此操作? 理想情况下,我想获得这张
..
我了解在尝试处置系统定义的资源会导致引发异常. 如何检测(除了将Dispose()调用包装在try/catch中)之外,这些资源之一是引用系统定义的值还是用户定义的值似乎并不明显. 解决方案 不需要调用Dispose.垃圾收集的目的是消除这些要求. IDisposable的主要目的之一是允许类在资源受限的环境中清理非托管资源.如果不调用dispose方法,则在垃圾收集过程中对象
..
我有以下代码在Winform上创建混合背景: public partial class Aging : Form { protected override void OnPaintBackground(PaintEventArgs e) { using (var brush = new LinearGradientBrush(this.ClientRectan
..
我有一个用System.Drawing.Graphics DrawImage函数显示的System.Drawing.Image.该图像是警车,我想在警车上画一个单位编号.是否有捷径可寻? 解决方案 您可以使用// Create string to draw. String drawString = "Sample Text"; // Create font and brush. Font
..
Graphics.DrawImage很好地支持绘制平行四边形: Bitmap destImage = new Bitmap(srcImage.Width, srcImage.Height); using (Graphics gr = new Graphics.FromImage(destImage)) { Point[] destPts = new Point[] { new Poi
..