2011-08-16 34 views
7

và cảm ơn bạn.Lặp lại cọ nền trong WPF

Câu hỏi này rất giống với câu hỏi cũ chưa được trả lời ở đây: How to paint notebook-like lines as TextBox background? Tuy nhiên, nó không giống nhau - không chính xác.

Tôi muốn tạo một notepad, lót giấy giống như nền nhưng tôi không quen thuộc với cách lặp lại một bàn chải trong XAML. Làm thế nào bạn?

EDIT

Dưới đây là các giải pháp như là một phần của một TextBox:

<TextBox TextBlock.LineHeight="20" 
     TextBlock.LineStackingStrategy="BlockLineHeight" 
     Padding="20,10,20,20" TextWrapping="Wrap"> 
    <TextBox.Background> 
    <DrawingBrush TileMode="Tile" Stretch="None" Viewport="0,0,20,20" 
        ViewportUnits="Absolute" Opacity=".07"> 
     <DrawingBrush.Drawing> 
      <GeometryDrawing> 
       <GeometryDrawing.Pen> 
        <Pen Brush="RoyalBlue" /> 
       </GeometryDrawing.Pen> 
       <GeometryDrawing.Geometry> 
        <LineGeometry StartPoint="0,0" EndPoint="20,0"/> 
       </GeometryDrawing.Geometry> 
      </GeometryDrawing> 
     </DrawingBrush.Drawing> 
    </DrawingBrush> 
    </TextBox.Background> 
    Now is the time for all good men to come to the aid of their country. 
    Now is the time for all good men to come to the aid of their country. 
    Now is the time for all good men to come to the aid of their country. 
    Now is the time for all good men to come to the aid of their country. 
    Now is the time for all good men to come to the aid of their country. 
</TextBox> 
+0

Về chỉnh sửa đề nghị: Tôi sẽ đồng ý, xin vui lòng trích xuất giải pháp cụ thể của bạn thành một câu trả lời riêng biệt. (Cũng có thể thêm một lưu ý về cách 'LineHeight' và' LineStackingStrategy' giải quyết vấn đề căn chỉnh, nếu cần) –

Trả lời

9
<DrawingBrush TileMode="Tile" Stretch="None" 
       Viewport="0,0,20,20" ViewportUnits="Absolute"> 
    <DrawingBrush.Drawing> 
     <GeometryDrawing> 
      <GeometryDrawing.Pen> 
       <Pen Brush="Gray"/> 
      </GeometryDrawing.Pen> 
      <GeometryDrawing.Geometry> 
       <LineGeometry StartPoint="0,0" 
           EndPoint="20,0"/> 
      </GeometryDrawing.Geometry> 
     </GeometryDrawing> 
    </DrawingBrush.Drawing> 
</DrawingBrush> 
+0

Bạn sẽ điều chỉnh gì để ảnh hưởng đến độ dày của đường? '' rõ ràng là không chính xác. Cảm ơn. –

+0

@JerryNixon: Trên thực tế nó phải là 'Pen.Thickness', có thể có một số vấn đề với răng cưa nếu dòng không nhận được mỏng hơn cho bạn. –

0

Sử dụng một ImageBrush

<ImageBrush ImageSource="image.png" TileMode="Tile"/> 
+0

Đây là những gì tôi có, nhưng nó chỉ hiển thị hình ảnh một lần, căn giữa. –

1

Funny, chỉ làm điều tương tự. Đây rồi. Bạn có thể sẽ phải chơi với TileMode để thiết lập hướng của ốp lát, và ViewPort, hai số cuối cùng phải là chiều rộng/chiều cao của hình ảnh của bạn (tôi phải làm điều này vì hình ảnh của tôi đã bị kéo dài hoặc không đến bên phải).

<ImageBrush x:Key="WindowBackground" ImageSource="/Images/Background.png" TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,4,4" /> 
Các vấn đề liên quan