gpt4 book ai didi

c# - GDI 整体剪裁范围

转载 作者:行者123 更新时间:2023-11-30 22:00:54 24 4
gpt4 key购买 nike

GDI 是否有任何设置整体剪切区域的方法,就像 GDI+ Graphics 对象一样?

具体来说:

  • Graphics.DrawString 使用包含裁剪边界系统的 GDI+
  • TextRenderer.DrawText 使用 GDI 而不是。

我的新滚动条系统会根据需要自动调整 Graphics 绘图区域的大小。在整理使用它的控件时,我将一些内联字符串呈现调用切换到我的文本布局类,该类使用 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 vs GDI+ : Clipping

有没有什么方法可以为整个 GDI 或特定的 TextRenderer 提供一个简单的裁剪区域?

非常感谢

最佳答案

尝试使用 PreserveGraphicsClipping 格式标志:

  TextRenderer.DrawText(e.Graphics, "Testing", font, new Point(150, 28),
Color.Black, Color.Empty,
TextFormatFlags.PreserveGraphicsClipping);

关于c# - GDI 整体剪裁范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28175436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com