问题标签 [gdi+]

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 回答
4034 浏览

c# - 参数异常 - 参数无效(WinForm 上的 LinkLabel)

我编写了一个 Win Forms 应用程序来测试 LinkLabel 类的工作方式。在我单击更改后的 LinkLabel 之前,它似乎很好。Form1.cs 代码如下:

堆栈跟踪如下:

在 System.Drawing.Region.GetHrgn(Graphics g) 在 System.Windows.Forms.Control.Invalidate(Region region, Boolean invalidateChildren) 在 System.Windows.Forms.LinkLabel.InvalidateLink(Link link) 在 System.Windows.Forms。 LinkLabel.OnGotFocus(EventArgs e) 在 System.Windows.Forms.Control.WmSetFocus(Message& m) 在 System.Windows.Forms.Control.WndProc(Message& m) 在 System.Windows.Forms.Label.WndProc(Message& m) 在System.Windows.Forms.LinkLabel.WndProc(Message& msg) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows。在 System.Windows.Forms.UnsafeNativeMethods.SetFocus(HandleRef hWnd) 在 System.Windows 的 Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)。System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks) 在 System.Windows.Forms.Control 的 System.Windows.Forms.LinkLabel.OnMouseDown(MouseEventArgs e) 的 Forms.Control.FocusInternal()。 WndProc(Message& m) 在 System.Windows.Forms.Label.WndProc(Message& m) 在 System.Windows.Forms.LinkLabel.WndProc(Message& msg) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG&味精)在 System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager。FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at LinkLabelTest.Program.Main() 在 C:\Users\Tony\Documents\Visual Studio 2008\Projects\LinkLabelTest\LinkLabelTest\Program.cs:line 22C:\Users\Tony\Documents\Visual Studio 2008\Projects\LinkLabelTest\LinkLabelTest\Program.cs:line 22 中的 Main()C:\Users\Tony\Documents\Visual Studio 2008\Projects\LinkLabelTest\LinkLabelTest\Program.cs:line 22 中的 Main()

下面是设计器生成的代码:

请有人建议。是 LinkLabel 的 Paint 事件发生时没有窗口句柄的问题。

提前谢谢了

托尼

0 投票
2 回答
14103 浏览

c++ - 如何从 HBITMAP 创建 Gdiplus::Bitmap,保留 alpha 通道信息?

当我使用 Bitmap::FromHBITMAP 函数创建一个新的 Gdiplus::Bitmap 时,生成的位图是不透明的 - 原始 HBITMAP 的部分透明度没有被保留。

有没有办法从 HBITMAP 创建一个 Gdiplus::Bitmap ,它带来了 alpha 通道数据?

0 投票
17 回答
106266 浏览

c# - Image.Save(..) 抛出 GDI+ 异常,因为内存流已关闭

我有一些二进制数据,我想保存为图像。当我尝试保存图像时,如果用于创建图像的内存流在保存之前已关闭,则会引发异常。我这样做的原因是因为我正在动态创建图像,因此..我需要使用内存流。

这是代码:

有人对我如何在流关闭的情况下保存图像有任何建议吗?我不能依赖开发人员记住在图像保存后关闭流。事实上,开发人员不知道图像是使用内存流生成的(因为它发生在其他一些代码中,其他地方)。

我真的很困惑:(

0 投票
2 回答
562 浏览

asp.net - 使用 xsp 在 Mono 中 GDI 所需的库

这是情况。我正在mono xsp 下运行的asp 页面上创建一些图形(使用GDI+)。这在我的开发环境中非常有用,因为我的开发环境在 GUI 下运行,但是当我尝试在无 GUI 的服务器上运行它时,它会失败(我假设由于 Gnome 运行所需的某些库未安装)。需要哪些库以及如何安装它们才能在无 GUI 安装的 Mono 下运行 GDI 代码。

0 投票
1 回答
1881 浏览

gdi+ - GDI+到GDI之间转换的奇怪问题:Bitmap和HBitmap

我想将 gdi+ Bitmap 转换为 gdi 对象 HBitmap。

我正在使用以下方法:

img 对象正在对话框上绘制。当这部分方法被调用时,奇怪的事情发生了!窗口中显示的img改变了!它变得更清晰或更锐利。我的问题是会发生什么?

0 投票
2 回答
1466 浏览

c++ - GDI+ 抖动问题

我有一个使用适用于 Windows 的 Win32 API 的 C++ 应用程序,当我不知道为什么会这样时,我遇到了 GDI+ 抖动问题。

我有一个自定义控件(自​​定义窗口)。当我收到 WM_PAINT 消息时,我在图形设备上使用 FillPolygon 绘制了一些多边形。此图形设备是使用 BeginPaint 的 HDC 创建的。

但是,当多边形出现在屏幕上时,它们会抖动而不是透明,并且似乎只显示很少的颜色(可能是 256 种?)让我想知道发生了什么。

我没有做任何特别的事情,据我所知,这是一个应该可以正常工作的简单示例。难道我做错了什么?

编辑:没关系。它只发生在远程桌面上,即使 C# 示例没有在远程桌面上抖动。远程桌面设置为 32 位颜色,所以我不知道这是怎么回事。

0 投票
9 回答
42395 浏览

c# - 你能用C#制作一个透明的透明PNG吗?

我有一个显示垂直文本的多浏览器页面。

作为让文本在所有浏览器中垂直呈现的丑陋技巧,我创建了一个自定义页面处理程序,它返回一个带有垂直绘制文本的 PNG。

这是我的基本代码(C#3,但对任何其他版本进行了小改动,直到 1):

这会创建一个看起来像我想要的图像,除了透明度是基于索引的。当我返回 PNG 时,它可以支持适当的 alpha 透明度。

有没有办法在.net中做到这一点?


感谢 Vlix(见评论)我做了一些改变,虽然它仍然不正确:

现在 alpha 似乎可以工作了,但文本看起来是块状的 - 好像它仍然有锯齿状的边缘,但在黑色背景下。

这是 .Net/GDI+ 的一些错误吗?我已经发现它甚至无法用于 gif 的索引透明胶片,所以我对它没有多大信心。

此图像显示了出错的两种方式:

垂直文本比较

顶部图像显示它没有白色背景或MakeTransparent呼叫。第二个用背景填充白色然后MakeTransparent调用添加索引透明度。

这些都不正确 - 第二个图像有我不想要的白色锯齿锯齿,第一个图像似乎与黑色完全混叠。

0 投票
1 回答
393 浏览

c# - CustomControl 棋盘上突出显示的方块不会持续超出初始 MouseDown 事件

我一直在用 C# 编写一个 Windows 应用程序国际象棋游戏作为磨练我的技能的练习,也因为它很有趣。我已经包含了允许玩家选择选项以突出显示一个棋子在被点击时可以合法移动到的方格的功能。CustomControl 处理棋盘的呈现,它还突出显示正方形。

这一切都按计划进行,直到玩家开始将棋子拖到新的方块上。鼠标一移动,高光就消失了。我怀疑引发了 Paint 事件并且板重新绘制自身。而且由于高光不是初始电路板布局的一部分,因此它们不会被绘制。

我想要做的是让方块保持突出显示,直到将棋子放在其目标方块上。有可能做到这一点吗?任何建议将不胜感激。

伪代码:

0 投票
2 回答
3765 浏览

c# - 如何在 GDI+ 中对具有真实形状测量(英寸)的旋转形状进行命中测试?

鉴于我有一个包含许多形状的画布,现在让我们说矩形。

每个形状都有一个位置(英寸)、大小(英寸)和旋转角度(度)。

当鼠标单击事件发生在画布内时,位置 (x,y) 以像素为单位。

考虑到旋转角度和测量单位转换,我想检查单击的鼠标位置是否在特定形状内/内。

你能帮我吗?

0 投票
5 回答
966 浏览

c# - 有没有办法在 C# 中的其他控件上绘制控件?

我想在它被覆盖的绘制事件中在其他一些控件上绘制一个控件。通过绘图,我的意思是真正的绘图,而不是将控件放在另一个控件中。有什么好办法吗?