问题标签 [system.drawing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3411 浏览

wpf - 从 WPF 应用程序窗口获取位图?

Winforms System.Windows.Forms.Control 类有一个实例方法“DrawToBitmap”,我认为它在各种情况下都非常有用。我想知道是否有从 WPF 应用程序获取 System.Drawing.Bitmap 的等效方法?

我意识到我可以做一些 P/Invoke 的东西来获取应用程序窗口,但是我不喜欢这样,因为它不能很好地适应 64 位转换,并且不允许我只渲染子控件,如 DrawToBitmap做。

谢谢,理查德

0 投票
1 回答
1431 浏览

.net - 在 GDI+ 中使用“DrawString”的小型大写字母/多种字体和粗体

我想用小型大写字母结合不同字体的不同单词写出一些文本。

为了澄清,我可能希望将消息“欢迎来到我们的新网站”生成为页面标题的 PNG 文件。

  • 文本将是小型大写字母——所有内容都大写,但“W”、“N”和“W”稍大。
  • “新网站”将采用与文本其余部分不同的字体。

有没有办法我可以做到这一点而无需完全手动完成?

做这样的事情在概念上是我想做的:

到目前为止我能找到的最好的方法是here,但我担心我会不厌其烦地手动执行此操作并最终导致一些可怕的字距调整或跟踪 问题。

编辑:我应该提到这是在 ASP.NET 中完成的,因此它需要尽可能快速和精简。我希望它是自动化的,这样我就可以轻松地进行本地化,而不必创建大量的小图像。

0 投票
1 回答
1371 浏览

c# - 三角形列表的路径 (.NET/C#)

给定一个表示为二维点数组的路径:

...在这里,一个盒子。

将其转换为要在 3D 应用程序中使用的三角形列表(填充路径)的最佳方法是什么?鉴于这只是一个简单的示例,实际路径可能相当复杂。框架中是否已经有任何东西,可能是 System.Drawing 或 WPF 中可以帮助解决这个问题?

编辑:(在塞缪尔的评论之后)理想情况下,我希望能够同时处理凸多边形和凹多边形,否则图形必须手动由许多凸多边形组成。

0 投票
1 回答
104 浏览

vb.net - 关于图像和winforms的问题

我正在创建一个 Kiosk 应用程序。我有它全屏,我直接在表格上绘图:

一切都画得很好,但是当我按下 Alt 或 Tab (单独或一起,以任何顺序)时,我绘制的矩形消失了。如果我再次调用该函数,无论我按什么按钮,它都会重绘并保持不变。是否有某种我需要调用的 .NET 函数,所以我的绘图函数只需要调用一次?

谢谢。

0 投票
3 回答
3376 浏览

.net - Convert a 24 bit in memory image to indexed color

I have an image that I have created in memory as Format24bppRgb.

I save this as a PNG and it is 24kb.

If I save the same image with photoshop as a 24bit PNG it comes to about the same size, but if i save it as an 8bit PNG with only 32 colors it goes down to 5kb.

How can I create an indexed version of a PNG file using C# / GDI+ / System.Drawing ?

I'm having a hard time finding any answers to this question that don't just apply to grayscale images or require an external library. is it not possible within GDI+ as is?

0 投票
3 回答
2605 浏览

c# - How to disable subsampling with .NET / GDI+?

I am trying to save a JPEG image using the Bitmap class. I noticed that sharp edges were always blury regardless of the quality level that I specify. I figured out that it is due to subsampling of one or more of the channels. How do I disable subsampling when saving the image?

I am currently using this code:

NOTE

I know that JPEG is lossy, but that's not the issue here. If I use ImageMagick and save the image with the default options, I get similar results. However, if I specify 1:1:1 subsampling, the blurring disappears.

I do not want to use PNG because I need better compression. If I save the image as BMP and then convert it manually to JPEG, I get excellent results, without blurring. Therefore, the format is not the issue here.

0 投票
2 回答
1442 浏览

.net - 可靠的 .wmf/wmf 到基于像素的图像转换

下午好,

我在使用.net 的内部(System.Drawing)基于 MetaFile / Image 处理包含透明区域的 .wmf 文件时遇到了一些麻烦。基本上每当我执行 MetaFile.LoadFile(...) 并将其保存为 tiff/png 等时,该源文件的某些区域都会丢失。我真的无法确定它,但它 - 似乎 - 元文件中基于矢量的信息工作正常,但基于像素的区域(例如放置在 .wmf 中的图像)丢失了。

有谁知道正确转换 wmf 文件的可靠、.net 本机和非 3rd-party 方式(如.. 基于像素的最终图像看起来像 .wmf.. 只是.. 好.. 像素化)?

干杯和感谢,-J

0 投票
8 回答
3785 浏览

.net - 为什么使用 System.Drawing 创建的 JPEG 图像比原始位图大?

我遇到了一个奇怪的问题——我有大约 1450 万张位图图像,据说是未压缩的。我需要将这些位图转换为 JPG 并将它们存储在数据库中。

当我使用 .NET System.Drawing 库中提供的类将位图保存为 ImageFormat.Jpeg 时,生成的 JPEG 大约是原始位图大小的两倍。这是代码:

我查看了其中几个图像的 HEX,看起来压缩设置为“无”。所以我假设它们是未压缩的。此外,原始文件的 HEX 具有“BMP”代码,而生成的文件具有您所期望的“JFIF”代码。

图像是黑白的,没有颜色。

关于为什么会发生这种情况的任何想法?寻找正确方向的指针...

编辑:

  • 我尝试使用备用重载来保存,以允许您指定质量。没有看到任何好处。
  • 我还应该说明我在这里在某种程度上坚持使用 JPEG。这是一个遗留系统,系统的其他部分需要 JPEG。

图片属性:

  • 位图尺寸:152x48
  • 位图文件大小:1022 字节
  • JPEG:相同尺寸
  • JPEG 大小:2.2 kb
  • 位图信息:索引,1 层(2 种颜色)
  • 位图分辨率:96.012x 96.012 ppi
0 投票
2 回答
423 浏览

windows-mobile - System.Drawing.Imaging.ColorMap 等效于 .NET Compact Framework

我需要在 .NET Compact Framework 中使用 ColorMap 对象,但据我所知它不可用。

需要一些关于如何最好地解决此限制的想法。

0 投票
2 回答
1946 浏览

c# - 如何从 System.Window.media.PixelFormats.Gray16 创建位图

我成功地从他们的原始像素数据中绘制了图像。(只有 8 位图像)。这是做同样事情的代码。

现在众所周知,c# 2.0 GDI+ 不支持 PixelFormat.format16bppGrayscale。我用谷歌搜索并获得了 3.0/3.5 框架支持。所以我两个都安装了。支持的类是 System.windows.media.PixelFormats。PixelFormats.Gray16

现在我的问题是如何通过传递此参数来创建位图并获取要显示的图像。

我在那里得到了一些 BitmapSource 类,但我在 C#3.0 中很新。

请帮我。