Tag: gdi +

GDI + / C#:如何将图像保存为EMF?

如果使用Image.Save方法将图像保存到EMF / WMF,则会出现exception( http://msdn.microsoft.com/en-us/library/ktx83wah.aspx ) 还有另一种方法可以将图像保存到EMF / WMF吗? 有没有可用的编码器?

绘制多个手绘折线或曲线图 – 添加撤消function

我正在尝试使用撤消和重做function创建一个简单的绘图应用程序。 我假设您可以将您绘制的内容添加到列表中并调用列表来绘制所有内容。 然后撤消应该只删除最后添加的项目并重新绘制所有内容。 问题是,如何将我绘制的内容添加到列表中并使用该列表进行撤消? 我正在使用位图重绘方法。 这是我画的方式: Point start, end; bool painting; private List myPoints = new List(); private void pnlMain_MouseDown(object sender, MouseEventArgs e) { start = e.Location; painting = true; } private void pnlMain_MouseUp(object sender, MouseEventArgs e) { painting = false; } private void pnlMain_MouseMove(object sender, MouseEventArgs e) { if (painting == true) { end […]

DrawImage调整图像太小

当我使用Graphics.DrawImage绘制图像并以比原始图像更大的尺寸绘制图像时,它最终会有点太小。 您可以在下图中看到: 绿线不应该是可见的,也不是图像的一部分。 相反,它们被绘制在图像后面,图像应该覆盖它们。 如何绘制尺寸合适的图像? 编辑 :我绘制绿色部分与我传递到DrawImage调用相同的矩形,具有图像应该有多大的确切尺寸。 所以我的价值观没有任何缺陷(我认为)。 编辑2 :我使用FillRectangle绘制绿色矩形,因此不需要进行笔计算。 此外,我记录了传递给图像和绿色填充的矩形的值,并且值是正确的。 这只是图像的关闭。 我稍后会发布代码,因为我现在不在我的电脑上。 编辑3 :这是我用来渲染图像的代码: // This is for zooming public readonly float[] SCALES = { 0.05f, 0.1f, 0.125f, 0.25f, 0.333f, 0.5f, 0.667f, 0.75f, 1.0f, 1.25f, 1.5f, 1.75f, 2.0f, 2.5f, 3.0f, 3.5f, 4.0f, 4.5f, 5.0f, 6.0f, 7.0f, 8.0f, 10.0f, 12.0f, 15.0f, 20.0f, 30.0f, 36.0f }; […]

绘制后如何将圆圈视为控件? – 移动和选择形状

实际上,点击每个圆圈之后我想要改变它的颜色,例如,我希望它变成红色,总的来说,我想把它当作对照。 我知道如何在双击图片框时绘制代表图表节点的圆圈。 我正在使用以下代码: public Form1() { InitializeComponent(); pictureBox1.Paint += new PaintEventHandler(pic_Paint); } public Point positionCursor { get; set; } private List points = new List(); public int circleNumber { get; set; } private void pictureBox1_DoubleClick(object sender, EventArgs e) { positionCursor = this.PointToClient(new Point(Cursor.Position.X – 25, Cursor.Position.Y – 25)); points.Add(positionCursor); Label lbl = new Label(); lbl.BackColor […]

Graphics.DrawString vs TextRenderer.DrawText?哪个可以提供更好的质量

TextRenderer基于GDI和Graphics.DrawString基于GDI +。这些函数中的哪些function可以在图像上绘制文本时提供更高质量的文本。

绘制透明按钮

我正在尝试在C#(.NET 3.5 SP1)中创建一个透明按钮,以便在我的WinForms应用程序中使用。 我已经尝试了一切让按钮变得透明(它应该在按钮下方显示渐变背景)但它只是不起作用。 这是我正在使用的代码: public class ImageButton : ButtonBase, IButtonControl { public ImageButton() { this.SetStyle( ControlStyles.SupportsTransparentBackColor | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true); this.BackColor = Color.Transparent; } protected override void OnPaint(PaintEventArgs pevent) { Graphics g = pevent.Graphics; g.FillRectangle(Brushes.Transparent, this.ClientRectangle); g.DrawRectangle(Pens.Black, this.ClientRectangle); } // rest of class here… } 问题是按钮似乎是从某个地方抓取随机UI内存并从Visual Studio的UI中填充一些缓冲区(在设计模式下)。 在运行时它会抓住一些零缓冲区并且完全是黑色的。 我的最终目标是在隐形按钮而不是矩形上绘制图像。 […]

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) 结果总是: 139.3942 134 为什么这么大的差异呢? 我只需要在外面绘制圆形宽度的方法。 但它应匹配MeasureString,反之亦然。

如何用c#制作两个透明层?

有三个连续的图层, picturebox1(.jpg) -> label1 -> picturebox2(.png transparent)我想要的是使label1和pictrurebox2对pict​​urebox1透明,这样label1可以通过picturebox2看到但它无法正常工作.. public Form1() { InitializeComponent(); label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; pictureBox2.Parent = pictureBox1; pictureBox2.BackColor = Color.Transparent; picturebox2.BringToFront(); } 所以请帮助我