1

这可能是一个简单的问题,即使我还没有找到一个简单的解决方案:

我已经实现了我的自定义 UITypeEditor,其唯一目的是将 PaintValue 添加到布尔值。为了便于讨论,我们假设 PaintValue 将绘制选中或未选中的单选按钮。

问题一:

现在,问题来了:在所有绘制代码​​完成后,PaintValue 似乎会自动插入一个 20x13px 的矩形。自然,黑色矩形内的单选按钮很难看。我可以轻松地指示或覆盖这个矩形被绘制吗?

问题2:

在这方面,是否可以在 propertygrid 的本机外观之上进行绘制——这意味着我可以绘制一些东西以掩盖(部分)垂直分隔两个网格单元的黑线吗?这样做的目的是表明两个值是关联的,例如将宽度/高度约束到纵横比。

任何答案都非常感谢。

4

2 回答 2

3

我不知道这幅画,但在第 2 点 - 可能通过添加字形- 在codeprojectIPropertyValueUIService上有一个示例。

于 2010-03-24T23:04:12.720 回答
3

您可以使用以下代码删除矩形,但不能在其外部绘制。好吧,你可以绘画,但 PropertyGrid 稍后会在上面绘画,所以它没有多大意义。

public override void PaintValue(PaintValueEventArgs e)
{
    // remove the lines (you cannot draw on these lines anymore)
    e.Graphics.ExcludeClip(
        new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, 1));
    e.Graphics.ExcludeClip(
        new Rectangle(e.Bounds.X, e.Bounds.Y, 1, e.Bounds.Height));
    e.Graphics.ExcludeClip(
        new Rectangle(e.Bounds.Width, e.Bounds.Y, 1, e.Bounds.Height));
    e.Graphics.ExcludeClip(
        new Rectangle(e.Bounds.X, e.Bounds.Height, e.Bounds.Width, 1));
    // now draw your own image - it will be shown without the box
    e.Graphics.DrawImage(myImage, e.Bounds);
}
于 2017-01-18T10:07:18.650 回答