none
使用DrawingGroup将几张图片贴成背景所遇到的问题 RRS feed

  • 问题

  • 程式的背景由几张图片拼接而成

    我自己试着用DrawingGroup写了一个代码如下

            <Page.Background>
                <DrawingBrush>
                    <DrawingBrush.Drawing>
                        <DrawingGroup>
                            <ImageDrawing ImageSource="l.png" Rect="0,0,8,186"/>
                            <ImageDrawing ImageSource="m.png" Rect="8,0,472,186"/>
                            <ImageDrawing ImageSource="r.png" Rect="480,0,8,186"/>
                        </DrawingGroup>
                    </DrawingBrush.Drawing>
                </DrawingBrush>
            </Page.Background>

    但发现在图片拼接的地方有空隙

    如果修改ImageDrawing的rect

            <Page.Background>
                <DrawingBrush>
                    <DrawingBrush.Drawing>
                        <DrawingGroup>
                            <ImageDrawing ImageSource="l.png" Rect="0,0,9,186"/>
                            <ImageDrawing ImageSource="m.png" Rect="8,0,473,186"/>
                            <ImageDrawing ImageSource="r.png" Rect="480,0,8,186"/>
                        </DrawingGroup>
                    </DrawingBrush.Drawing>
                </DrawingBrush>
            </Page.Background>

    图片交接的地方又会出现交叠

    想请教下大家遇到类似情况都是如何处理的


    • 已编辑 leanliu 2013年3月1日 8:21
    2013年3月1日 8:20

答案

全部回复

  • 可以把你的三种图片上传看看吗?


    Cheers, Amy

    2013年3月4日 9:23
  • Left   middle   

    好像不能提交附件不知道這樣能不能獲取到原始的png

    2013年3月5日 1:52
  • 一次只能傳兩張 

     right

    2013年3月5日 1:53
  • 你好,

    用你提供的代码及图片可以重现你的问题,这里有两个workaround 你可以尝试下:

    1.设置窗口的背景色为与你图片相似的颜色,例如(假设你图片主题部分颜色为红色):

    <Page.Background> 
     <DrawingBrush >
                <DrawingBrush.Drawing>
                    <DrawingGroup>
                        <GeometryDrawing Brush="Red">
                            <GeometryDrawing.Geometry>
                                <RectangleGeometry Rect="0,0,500,200"/>
                            </GeometryDrawing.Geometry>
                        </GeometryDrawing>
                          <ImageDrawing ImageSource="l.png" Rect="0,0,8,186"/>
                            <ImageDrawing ImageSource="m.png" Rect="8,0,472,186"/>
                            <ImageDrawing ImageSource="r.png" Rect="480,0,8,186"/>
                    </DrawingGroup>
                </DrawingBrush.Drawing>
            </DrawingBrush>
    </Page.Background>

    2.使用图片来填充背景而不是绘制背景

    <Page.Background>
        <VisualBrush>
           <VisualBrush.Visual >
               <StackPanel Orientation="Horizontal" Background="Red" Width="500" Height="186">
                   <Image Source="l.png" Stretch="Fill" Width="8" Height="186"/>
                    <Image Source="m.png" Stretch="Fill" Width="472" Height="186" Canvas.Left="8" />
                    <Image Source="r.png" Stretch="Fill" Width="8" Height="186" Canvas.Left="480" />
                </StackPanel>
             </VisualBrush.Visual>
        </VisualBrush>
     </Page.Background>


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年3月5日 8:09
    版主
  • 你好,

    关于这个问题我帮你提了一个connect, 你可以根据这个链接:https://connect.microsoft.com/VisualStudio/feedback/details/780653/there-are-gaps-between-images-when-try-to-splice-these-images-into-a-picture-using-imagedrawing 来查看它的解决进度。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 leanliu 2013年3月8日 7:49
    2013年3月5日 8:43
    版主
  • 这个图片本来是想用来做为无边框的窗口背景的

    因此把背景设置为相近颜色不太合适

    用第二种方式好像也有空隙

    现在只能暂时做成有部分交叠,效果比有空隙好些

    感谢~

    2013年3月8日 7:48