GDI 整体剪裁范围
GDI Overall Clipping Bounds
GDI 是否有任何设置整体剪切区域的方法,就像 GDI+ 图形对象一样?
具体来说:
Graphics.DrawString
使用 GDI+ 其中包括裁剪边界系统。
TextRenderer.DrawText
使用 GDI 而不是。
我的新滚动条系统会根据需要自动调整 Graphics
绘图区域的大小。在整理使用它的控件时,我将一些内联字符串呈现调用切换到我的文本布局 class,它使用 TextRenderer.DrawText
。我不太记得 为什么 我使用它而不是 Graphics.DrawString
,但在我重构之前我想检查是否有某种方法可以解决目前的问题.
public class GraphicsClipExample : Form
{
public GraphicsClipExample()
{
this.ClientSize = new Size(this.ClientSize.Width, 100);
}
protected override void OnPaint(PaintEventArgs e)
{
// update the graphics clip area
e.Graphics.Clear(Color.Cyan);
e.Graphics.SetClip(new Rectangle(0, 0, e.ClipRectangle.Width, 50));
e.Graphics.Clear(Color.Magenta);
Font font = new Font("Calibri", 24);
e.Graphics.DrawString("Testing", font, Brushes.Black, 10, 28);
TextRenderer.DrawText(e.Graphics, "Testing", font, new Point(150, 28), Color.Black);
}
}
这会产生以下输出:
有什么方法可以为 GDI
总体或具体 TextRenderer
提供简单的裁剪区域?
非常感谢
尝试使用 PreserveGraphicsClipping 格式标志:
TextRenderer.DrawText(e.Graphics, "Testing", font, new Point(150, 28),
Color.Black, Color.Empty,
TextFormatFlags.PreserveGraphicsClipping);
GDI 是否有任何设置整体剪切区域的方法,就像 GDI+ 图形对象一样?
具体来说:
Graphics.DrawString
使用 GDI+ 其中包括裁剪边界系统。TextRenderer.DrawText
使用 GDI 而不是。
我的新滚动条系统会根据需要自动调整 Graphics
绘图区域的大小。在整理使用它的控件时,我将一些内联字符串呈现调用切换到我的文本布局 class,它使用 TextRenderer.DrawText
。我不太记得 为什么 我使用它而不是 Graphics.DrawString
,但在我重构之前我想检查是否有某种方法可以解决目前的问题.
public class GraphicsClipExample : Form
{
public GraphicsClipExample()
{
this.ClientSize = new Size(this.ClientSize.Width, 100);
}
protected override void OnPaint(PaintEventArgs e)
{
// update the graphics clip area
e.Graphics.Clear(Color.Cyan);
e.Graphics.SetClip(new Rectangle(0, 0, e.ClipRectangle.Width, 50));
e.Graphics.Clear(Color.Magenta);
Font font = new Font("Calibri", 24);
e.Graphics.DrawString("Testing", font, Brushes.Black, 10, 28);
TextRenderer.DrawText(e.Graphics, "Testing", font, new Point(150, 28), Color.Black);
}
}
这会产生以下输出:
有什么方法可以为 GDI
总体或具体 TextRenderer
提供简单的裁剪区域?
非常感谢
尝试使用 PreserveGraphicsClipping 格式标志:
TextRenderer.DrawText(e.Graphics, "Testing", font, new Point(150, 28),
Color.Black, Color.Empty,
TextFormatFlags.PreserveGraphicsClipping);