问题标签 [system.graphics]

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 投票
1 回答
565 浏览

.net - 如何确定沿 GDI+ 路径的点

GDI+(.NET 中的 System.Drawing.Graphics)是否提供了一些方法来确定图形路径上的点?

具体来说,我希望找到一种简单的方法来编写以下函数:

where一个介于 0 和 1 之间的数字指定沿路径行进的距离。

0 投票
1 回答
1078 浏览

c# - DrawImage 无法正确定位切片图像

几天来,我试图弄清楚为什么我的九片代码不能按预期工作。据我所见,Graphics.DrawImage 方法似乎存在问题,它错误地处理了我的九个切片图像。所以我的问题是如何补偿在紧凑框架上运行我的代码时执行的不正确缩放。我可能会补充一点,当在完整的框架环境中运行时,这段代码当然可以完美运行。仅当将图像缩放到更大的图像时才会出现此问题,而不是相反。这是片段:

所以,我的问题是,现在有人可以如何补偿不正确的缩放比例吗?

/担

0 投票
3 回答
5492 浏览

c# - 为 Windows 窗体存储图像集的最佳方式

我正在开发一个 Windows 窗体应用程序,我将使用一组图像(想想图标)。根据主题,必须选择不同的图像集(我稍后将使用 绘制它们Bitmap)。

我正在考虑将图像存储在单独的文件中(存档文件?dll?),然后在运行时从主应用程序加载它们。最有效的方法是什么?

感谢您的阅读。

0 投票
1 回答
129 浏览

.net - 从粉红色的背网格图像中正确剪切图像以进行绘制

在此处输入图像描述

看看上面的图片。我正在创建基于图块的游戏的(娱乐)。在我的其他精灵中,我只是将地形方块放入网格中,它们是实心的,所以没有问题。这里的问题是,如果我现在使用这个角色,它会试图显示他身后的粉红色(他是 16x16)。

我正在使用 System.Graphics 来显示项目(并在使用 graphics.DrawImage() 时将它们剪掉)。有什么办法可以让它忽略特定的颜色并使它们透明吗?

我正在使用 VB.net,所以所有 .net 答案都是可以接受的。

对于评论中的一点(或答案中的额外点),使用粉红色网格包含所有精灵的方法是什么?

0 投票
4 回答
1689 浏览

c# - Graphics.DrawImage 在 x86 和 x64 上创建不同的图像数据

嘿!

这是我的设置
我有一个 ac# 应用程序,可以从一系列图像中提取特征。由于数据集(几千张图像)的大小,它是高度并行化的,这就是为什么我们有一台带有 ssd 的高端机器,它在 Windows7 x64(.NET4 运行时)上运行以解除繁重的工作。我正在使用 Windows 窗体的 Visual Studio 2008 (.NET3.5) 下的 Windows XP SP3 x86 机器上开发它——顺便说一句,没有机会迁移到 WPF。

Edit3: 这很奇怪,但我想我终于知道发生了什么。似乎是在两台机器上产生不同结果的图像格式的编解码器!我不确切知道那里发生了什么,但 xp 机器上的解码器产生的结果比 win7 的更健全。可悲的是,更好的版本仍然在 x86 XP 系统中:(。我想解决这个问题的唯一方法是将输入图像格式更改为无损格式,如 png 或 bmp(愚蠢的我一开始就没有考虑文件格式 :) )。

编辑2: 感谢您的努力。我想我会坚持自己实现一个转换器,这不是我想要的,但我必须以某种方式解决它:)。如果有人正在阅读这篇文章并对我有一些想法,请告诉我。

编辑: 在评论中,我被建议为此使用第三方库。我认为我没有让自己足够清楚,因为我真的不想使用 DrawImage 方法 - 这只是一个有缺陷的快速破解,以获得一个new Bitmap(tmp, ... myPixelFormat)希望使用一些插值的实际工作。我想要实现的只是将传入的图像转换为带有一些标准插值的通用 PixelFormat。

我的问题如下。一些源图像采用Indexed8bpp jpg格式,与 WinForms 图像处理不太好。因此,在我的图像加载逻辑中,会检查索引图像,它将图像转换为我的应用程序默认格式(例如 Format16bpp),如下所示:

我将问题追踪到(*). 我认为 InterpolationMode 与它有关,但我选择的其中哪一个没有区别,结果在(**)两个系统上是不同的。我一直在研究带有一些愚蠢的复制和粘贴行的测试图像数据,以确保以错误的方式访问数据不是问题。

这些图像一起看起来像这个电子反向散射衍射图案。实际的颜色值略有不同,但它们携带了大量信息——插值甚至增强了它。看起来 x86 机器上的合成算法使用 InterpolationMode 属性,而 x64 只是将调色板值散开而不考虑任何插值。

在我对应用程序中的数据实施直方图视图功能之前,我从未注意到两台机器的输出之间有任何差异。在 x86 机器上,它是平衡的,正如人们在观看图像时所期望的那样。另一方面,x64 机器宁愿给出某种稀疏条形图,即索引图像数据的指示。它甚至会影响整个应用程序的整体输出数据——具有相同数据的两台机器上的输出不同,这不是一件好事。

对我来说,这看起来像是 x64 实现中的一个错误,但这只是我 :-)。我只希望 x64 机器上的图像具有与 x86 相同的值。

如果有人有想法,我会非常高兴。我多年来一直在网上寻找类似的行为,但抵抗似乎是徒劳的:)

哦,当心……鲸鱼!

0 投票
1 回答
4031 浏览

c# - 如何从 C# 中的绘制面板获取位图

我有一个面板,我用它的 Graphics gr = panel1.CreateGraphics() 来绘制线条和其他东西。我需要获取鼠标点击点的像素颜色,所以我决定使用 Bitmap 的 GetPixel 方法。我以这种方式创建位图:

但即使我画了任何东西,我也只会得到白色的矩形。有什么问题?

0 投票
1 回答
7297 浏览

c# - 如果绘制区域太大,则向面板添加垂直滚动条

我正在使用 WinForms 和 C#。

我正在开发的应用程序在面板内绘制矩形行(使用 g.DrawRectangle())。面板可以容纳 6 个宽度的矩形(我不想水平滚动)。我在应用程序中通过计算行中的矩形来控制它,然后y在第六个矩形之后添加值。

在垂直方向上,我希望能够添加无限矩形并向下滚动以查看它们。现在,正在添加矩形,但面板不滚动(它们只是添加到屏幕外)。

有没有办法添加垂直滚动条?我尝试将AutoScroll属性设置为 true,但这并没有做任何事情。

0 投票
1 回答
236 浏览

c# - 显示不起作用

我正在尝试使用 PictureBox 在 WindowsForms 中制作网格,但相关代码无法正常data.block = block;工作。这部分有效,但这g.FillRectangle(brushBlack, block[n, i]);根本不起作用。我认为问题出在Form1_Shown事件中,因为:

执行得非常好。

覆盖protected override void OnShown(EventArgs e)给出与 相同的结果Form1_Shown

0 投票
1 回答
381 浏览

c# - 将 System.Graphics 保存到位图不起作用

我已经创建了绘图程序。它使用 System.graphics 在 panel1 上以表格形式绘制矩形等。 图形 鼠标绘制事件: 绘制 我想从 panel1 获取艺术作为位图,尝试了以下代码:

但它会在图像中生成 panel1 的背景颜色

0 投票
0 回答
353 浏览

c# - 为什么将大 TIFF 转换为 JPEG 会出现一般错误?

我之前使用此代码将 tiff 转换为 png:

它适用于任何大小和尺寸的所有 tiff 文件,直到我需要更改此代码并将 TIFF 文件转换为 JPEG:

但是当我更改代码时,上传大 tiff 大小时出现一般错误。像一个 21 MB 大小的图像。(小 tiff 大小没有问题)。

我能做些什么?我对大小没有限制。