首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DrawingContext.DrawRectangle绘制一个rect

DrawingContext.DrawRectangle绘制一个rect
EN

Stack Overflow用户
提问于 2016-03-30 01:43:11
回答 1查看 2.6K关注 0票数 0

我试图把一个矩形画成一个图像:

代码语言:javascript
运行
复制
<Canvas>
    <Image>
        <Image.Source>
            <DrawingImage>
                <DrawingImage.Drawing>
                    <DrawingGroup x:Name="_drawingGroup" />
                </DrawingImage.Drawing>
            </DrawingImage>
        </Image.Source>
    </Image>
</Canvas>

c#代码如下所示:

代码语言:javascript
运行
复制
DrawingVisual visual = new DrawingVisual();
using (DrawingContext dc = visual.RenderOpen())
{
    Rect rect = new Rect(new Point(100, 100), new Size(200, 100));
    dc.DrawRectangle(Brushes.Blue, null, rect);
}

this._drawingGroup.Children.Add(visual.Drawing);
this._drawingGroup.Freeze();

如您所见,我打算画一个左上角的矩形(100,100)。但是它并不像预期的那样工作--它总是在(0,0)处绘制。我哪儿不好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-30 06:37:53

DrawingImage将其Drawing对齐到绘图的可见Bounds

作为解决办法,您可以添加一个原点为(0,0)的透明矩形。还请注意,创建绘图不需要DrawingVisual:

代码语言:javascript
运行
复制
drawingGroup.Children.Add(new GeometryDrawing(
    Brushes.Transparent, null,
    new RectangleGeometry(new Rect(0, 0, 1, 1))));

drawingGroup.Children.Add(new GeometryDrawing(
    Brushes.Blue, null,
    new RectangleGeometry(new Rect(100, 100, 200, 100))));

drawingGroup.Freeze();

使用DrawingImage的图像控件的替代方法可能是(足够大的)带有DrawingBrush的矩形:

代码语言:javascript
运行
复制
<Rectangle Width="10000" Height="10000">
    <Rectangle.Fill>
        <DrawingBrush ViewboxUnits="Absolute" Viewbox="0,0,10000,10000">
            <DrawingBrush.Drawing>
                <DrawingGroup x:Name="drawingGroup" />
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Rectangle.Fill>
</Rectangle>

现在,您可以像预期的那样创建绘图:

代码语言:javascript
运行
复制
drawingGroup.Children.Add(new GeometryDrawing(
    Brushes.Blue, null,
    new RectangleGeometry(new Rect(100, 100, 200, 100))));

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

https://stackoverflow.com/questions/36298163

复制
相关文章

相似问题

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