在某些环境中,例如Office宏环境或VisualStudio,有些设计器可以显示预览,您可以将项目拖放到它上面。它们使用与操作系统其余部分相同的主题呈现。我不是要创建MDI,而是以相同的形式绘制一个窗口窗体。示例:在C#中,我将如何实现类似的功能? 最佳答案 也许你应该看看这篇文章:http://msdn.microsoft.com/en-us/magazine/cc163871.aspx文章讨论:设计时环境基础表单设计器架构在VisualStudio.NET中实现表单设计器为您自己的应用程序编写表单设计器需要实现的服务
我在Windows窗体应用程序中使用随机颜色作为背景。现在我想显示一个标签。问题是当随机颜色为白色且标签也是白色时,标签不可见。如何获得在我的背景颜色上可见的完美颜色?(我的背景颜色是System.Drawing.Color中的随机颜色。) 最佳答案 有多种方法可以确保适当的对比度。选项一:我通常坚持将文本保持为黑色或白色,具体取决于背景颜色的亮度。要获得亮度,可以简单地使用内置函数Color.GetBrightness()不幸的是,这并不是一个很好的解决方案,因为结果在感知上并不正确;即:绿色和黄色具有相同的值,这显然不是我们的眼
试图在Windows上运行这个程序#regionUsingStatementsusingSystem;usingMicrosoft.Xna.Framework;usingMicrosoft.Xna.Framework.Graphics;usingMicrosoft.Xna.Framework.Storage;usingMicrosoft.Xna.Framework.Input;#endregionnamespaceasdf{publicclassGame1:Game{GraphicsDeviceManagergraphics;SpriteBatchspriteBatch;publicG
我们有一个老化的.NETWindows桌面海洋导航应用程序,它对S-57海洋矢量图(map)、船舶、预测器和各种导航对象(例如路线)进行一些中等复杂的渲染。渲染是很久以前使用System.Drawing.Graphics实现的。在某些情况下,绘图会变得非常慢。我们使用了VS2013分析器和dotTrace分析器来优化我们代码中明显的热点。剩下的时间花在Graphics.DrawLines、Graphics.FillPolygon等方法上从长远来看,渲染需要重新实现或移植到硬件加速的图形API。是否存在与System.Drawing.Graphics具有相同接口(interface)的任
下面的GTK程序:#includeGtkVBox*vbox;GtkWindow*win;gbooleanTimer(gpointeruser_data){gtk_widget_queue_draw(GTK_WIDGET(vbox));return1;}intmain(intargc,char**argv){gtk_init(&argc,&argv);win=(GtkWindow*)gtk_window_new(GTK_WINDOW_TOPLEVEL);vbox=(GtkVBox*)gtk_vbox_new(TRUE,1);gtk_container_add(GTK_CONTAINER(
或者换个方式问,OnEraseBkgnd()是如何工作的?我正在构建一个自定义控件,我遇到了这个问题。像往常一样,child是矩形。我必须禁用OnEraseBkgnd()并且我只使用OnPaint()。我需要的是有效地清除child身后的区域并且不闪烁。后台缓冲区之类的技术不是一种选择。编辑:我对OnEraseBkgnd()背后的算法非常感兴趣。但任何有帮助的答案也将被接受。 最佳答案 通常在Windows中,减少闪烁的最简单(但不是最有效)的方法是关闭WM_ERASEBKGND通知处理。这是因为如果您在通知处理程序中删除背景,然后
我正在将内部使用图像魔法的javascript程序迁移到使用图形魔法的Windows批处理文件。我无法成功使用convert-draw命令。我有几个非常简单的测试用例。第一个是gmconvert-size1920x1080xc:white-draw'text8,8"Hello,world"'test.jpg失败并显示错误消息“不一致的绘图基元(文本)”。其他gmconvert-size1920x1080xc:white-draw'imageover8,80,0"img.jpg"'test.jpg因“不符合要求的绘图基元(图像)”而失败。从命令行调用和从BAT文件内部调用时,它们都失败。
我想获得一些WinForm图形知识,所以我将我的小型2D编辑器从XNA重写为WinForm图形。现在,我为tileset自己创建了一个新的UserControl,但正如我所见,Paint方法仅在控件初始化时调用。因为我想永久重绘我的控件(或者至少通过MouseOver事件来节省一点性能),我听说Invalidate()方法让控件重绘自己,但这方式性能太差了。有什么方法可以让我的UserControl通过代码绘制自己,而不会出现这些性能问题? 最佳答案 Paint方法不仅在控件初始化时调用。每次需要重新绘制控件时都会调用它。当然,这是
我正在尝试将Winforms与SharpDX项目集成,以便在我的3D应用程序中使用Winforms(并最终通过HostElement使用WPF)。我需要创建或配置一个控件或表单,以便我可以:一个。将其渲染为纹理(我可以将其显示为Sprite*)b.过滤其输入以在控件未激活时删除鼠标/键盘事件。我已经尝试子类化Control和Form,以覆盖OnPaint和OnPaintBackground,但这些对子控件没有影响-或者就此而言,表单边框(即使他们这样做了,它们本身也不够,就像我一样)仍然留下一个白色方block,我认为已经绘制了“父级”)。如何停止在屏幕上绘制控件或表单,而只绘制位图?
我正在使用MFC(但这也适用于Win32)并且我有一个要绘制的View。所以我重写了OnDraw方法。这是一些伪代码,我是这样编码的:voidOnDraw(DC*pDC){foreach(Nodeninnodes){n->DrawOnCanvas(pDC)}}我认为这是一个不错的OO解决方案。但是我遇到了一个问题。我现在想在初始DC周围画一个边界,但我不想让节点知道这一点。我希望节点仍然相对于从0,0开始的完整Canvas大小进行绘制(并且不知道偏移量)。如果我在父窗口中向节点提供有关边框的知识,它看起来很乱。你如何解决这样的问题?如何定义与现有DC相关的新DC?