首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnRender()方法中的DrawGeometry()

OnRender()方法中的DrawGeometry()
EN

Stack Overflow用户
提问于 2012-07-04 19:51:09
回答 1查看 1.5K关注 0票数 0

我有一个重写OnRender- UserControl的方法,如下所示:

MyUsercontrol.cs:

代码语言:javascript
复制
MyUserControl: UserControl
{
    protected override void OnRender(DrawingContext dc)
    {
       dc.DrawRectangle(Brushes.White, new Pen(Brushes.Black,1), new Rect(0,10,50,30));

       var visualBrush = new VisualBrush(new UserControl1{Height=30, Width=50});           
       dc.DrawGeometry(visualBrush, null, new RectangleGeometry(new Rect(50,10,50,30)));           
    }
}

上面使用的UserControl如下所示(在xaml中定义,没有额外的代码隐藏代码):

代码语言:javascript
复制
<UserControl x:Class="VisualBrushExample.UserControl1" ...>
<Grid>
   <Border BorderThickness="1" BorderBrush="Black" Background="White" CornerRadius=8,0,0,8"/>
</Grid>
</UserControl>

现在,如果我使用MyUserControl,我会得到以下输出:

我现在的问题是,如果存在一种方法,我可以在OnRender()方法中使用UserControl1,而不需要获得UserControl1-Rectangle周围的透明边框。

提前谢谢你,rhe1980

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-04 22:33:35

你看到不同大小的矩形的原因很简单。当您用钢笔绘制矩形时,钢笔线在矩形的边缘居中,或者换句话说,边缘位于线条的中间。因此,笔宽的一半在每个方向上都位于矩形之外。因此,您必须在矩形的宽度和高度上添加一个画笔宽度,以获得绘图输出的总大小,在您的示例中为51x31。

您也许可以通过Geometry.GetRenderBounds方法来检查这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11328537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档