标签: gdi+

如何将位图转换为图像

我正在制作一个中值滤波器,问题是操纵像素只能在中Bitmap.后来我想在一个PictureBox使用中显示结果Image.我无法找到解决这个问题的方法......我唯一想到的就是使用Stream但不知道怎么做.帮助将受到约束〜

private void toolStripPerformMedian_Click(object sender, EventArgs e)
{
    var filtered = Filters.MedianFilter(new Bitmap(_activeImageFile), 3);
    var n = Image.FromStream() //How to do this?
}
Run Code Online (Sandbox Code Playgroud)

c# gdi+ winforms

29
推荐指数
1
解决办法
5万
查看次数

将图像保存到文件

我正在研究一个基本的绘图应用程序.我希望用户能够保存图像的内容.

在此输入图像描述

我以为我应该用

System.Drawing.Drawing2D.GraphicsState img = drawRegion.CreateGraphics().Save();
Run Code Online (Sandbox Code Playgroud)

但这对我保存到文件没有帮助.

c# gdi+ image save winforms

28
推荐指数
3
解决办法
16万
查看次数

Winforms:SuspendLayout/ResumeLayout是不够的?

我有一些库"自定义控件".基本上我们有自己的按钮,圆角板和一些带有一些定制油漆的组合箱.尽管OnPaint方法中存在"数学",但控件非常标准.大多数情况下,我们所做的只是绘制圆角并为背景添加渐变.我们使用GDI +来实现这一切.

这些控件都可以(根据我们的客户非常好看),但是尽管有DoubleBuffer,你可以看到一些重绘,特别是当同一个表格上有20个++按钮时(例如).在表单加载时,您会看到绘制的按钮...这很烦人.

我很确定我们的按钮不是地球上最快的东西,但我的问题是:如果双缓冲区"打开",那么不应该在后台进行所有重绘,而Windows子系统应该"立即"显示结果吗?

另一方面,如果存在将创建标签的"复杂"foreach循环,则将它们添加到面板(双缓冲)并更改其属性,如果我们在循环之前挂起面板并在循环时恢复面板布局结束,不应该所有这些控件(标签和按钮)"几乎立即"出现?这不会发生这种情况,您可以看到面板被填充.

知道为什么不发生这种情况吗?我知道很难在没有示例代码的情况下进行评估,但这也难以复制.我可以用相机制作一个视频,但相信我这个,它不是很快:)

c# performance gdi+ doublebuffered winforms

26
推荐指数
4
解决办法
4万
查看次数

TextRenderer.MeasureText和Graphics.MeasureString的大小不匹配

这不是一个四舍五入的问题.差异~5 +像素.

测试用例字符串:""MACD(26,12,9)-0.000016"

e.Graphics.MeasureString("MACD (26,12,9) -0.000016", SystemFonts.DefaultFont).Width)
TextRenderer.MeasureText("MACD (26,12,9) -0.000016", SystemFonts.DefaultFont).Width)
Run Code Online (Sandbox Code Playgroud)

结果总是:

139.3942
134
Run Code Online (Sandbox Code Playgroud)

为什么尺寸差异如此之大?我只需要在外面绘制圆形宽度的方法.但它应该与MeasureString匹配,反之亦然.

c# gdi+

26
推荐指数
1
解决办法
3万
查看次数

C#GDI +和WPF之间的转换

我正在考虑将我的c#应用程序从使用自定义GDI +绘制控件迁移到带有自定义控件等的WPF应用程序.我想知道涉及的内容和期望的内容.

人们可以推荐哪些资源可能会有所帮助吗?或者确实任何可能有益的个人经历?

c# wpf gdi+

25
推荐指数
1
解决办法
1万
查看次数

如何使PictureBox使用最近邻重采样?

我正在使用StretchImage,因为该框可以使用分割器调整大小.看起来默认是某种平滑的双线性滤波,导致我的图像模糊并具有莫尔条纹.

.net c# gdi+ picturebox winforms

24
推荐指数
2
解决办法
1万
查看次数

使用GDI +创建具有透明背景的图像?

我正在尝试创建一个透明背景的图像,以显示在网页上.
我尝试了几种技术,但背景总是黑色的.
如何创建透明图像然后在其上绘制一些线条?

c# asp.net gdi+

24
推荐指数
1
解决办法
3万
查看次数

如何调整颜色的亮度?

我想将现有颜色变暗以用于渐变画笔.请问有人告诉我该怎么做?

C#,.net 2.0,GDI +

  Color AdjustBrightness(Color c1, float factor)
    {

        float r = ((c1.R * factor) > 255) ? 255 : (c1.R * factor);
        float g = ((c1.G * factor) > 255) ? 255 : (c1.G * factor);
        float b = ((c1.B * factor) > 255) ? 255 : (c1.B * factor);

        Color c  = Color.FromArgb(c1.A,(int)r, (int)g, (int)b);
        return c ;

    }
Run Code Online (Sandbox Code Playgroud)

c# gdi+

24
推荐指数
5
解决办法
4万
查看次数

System.Drawing.Image.Save中的GDI +发生了一般错误

例外:

GDI +中发生了一般错误.System.Drawing.Image.Save(String filename)的System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)at System.Drawing.Image.Save(String filename,ImageFormat format)at System.Drawing.Image.Save(String filename)

码:

byte[] bitmapData = new byte[imageText.Length];
MemoryStream streamBitmap;
bitmapData = Convert.FromBase64String(imageText);
streamBitmap = new MemoryStream(bitmapData);
System.Drawing.Image img = Image.FromStream(streamBitmap);
img.Save(path);
Run Code Online (Sandbox Code Playgroud)

我们将base64字符串转换为MemoryStream,然后创建System.Drawing.Image(Image.FromStream(streamBitmap)).最后,图像保存在临时文件中.

奇怪的是,当Web服务器上的活动(并发用户数)很高并且问题在IISRESET或应用程序池回收后暂时解决时,问题似乎发生了......

==>垃圾收集器问题?

我已经检查了TEMP文件夹的权限......

.net c# asp.net gdi+ image

22
推荐指数
2
解决办法
7万
查看次数

为什么EnumerateMetafile仅适用于启用Aero

我的代码枚举了一个元文件:

private void Parse()
{
    Graphics graphics = Graphics.FromHwnd(IntPtr.Zero);
    PointF pointf = new PointF();
    graphics.EnumerateMetafile(_metafile, pointf, ParseCallback);
}

private bool ParseCallback(EmfPlusRecordType recordType, 
    int flags, int dataSize, IntPtr data, PlayRecordCallback callbackData)
{
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

我的开发机器是VirtualBoxUbuntu主机上的Windows 7 客户机.

用来工作正常的代码.但是,当我关闭Aero时,代码停止工作:ParseCallback永远不会被调用.

只有当我重新打开Aero时,ParseCallback才会再次执行.

为什么以及如何使此代码在非启用Aero的计算机上运行?

c# gdi+ system.drawing.imaging

22
推荐指数
1
解决办法
568
查看次数