Tôi đang thực hiện một số bản vẽ tùy chỉnh bằng DrawingContext trong WPF. Tôi đang sử dụng DrawingContext.DrawText
để vẽ các chuỗi. Bây giờ, tại một nơi tôi muốn vẽ văn bản theo chiều dọc. Có tùy chọn nào trong hàm DrawingContext OR DrawText() để vẽ văn bản theo chiều dọc không?Vẽ văn bản dọc trong WPF bằng DrawingContext.DrawText()
6
A
Trả lời
10
Bạn sẽ phải sử dụng các phương thức PushTransform
và Pop
của lớp DrawingContext
.
DrawingContext dc; // Initialize this correct value
RotateTransform RT = new RotateTransform();
RT.Angle = 90
dc.PushTransform(RT)
dc.DrawText(...);
dc.Pop();
3
DrawingContext dc;
Point textLocation
var RT = new RotationTransform(-90.0);
// You should transform the location likewise...
location = new Point(-location.Y, location.X);
dc.PushTransform(RT);
dc.DrawText(formattedText, location);
Xin lỗi, tôi đã phải đăng bài này vì tôi đã đánh đầu tôi chống lại một bức tường trong vòng mười lăm phút cố gắng để con số này ra. Tôi không muốn bất cứ ai khác trải qua điều đó.
-1
Đây là giải pháp của tôi: Đó là cần phải tạo xoay chuyển xung quanh nguồn gốc văn bản, vì vậy chúng tôi vượt qua x và y để RotateTransform constructor
...
// ft - formatted text, (x, y) - point, where to draw
dc.PushTransform(new RotateTransform(-90, x, y));
dc.DrawText(ft, new Point(x, y));
dc.Pop();
...
+2
Vui lòng xem xét thêm một số văn bản để giải thích câu trả lời của bạn. –
Altough câu trả lời này là khá cũ tôi muốn thêm rằng biến đổi vị trí nên được thực hiện bởi một đối tượng chuyển đổi khác thay vì 'thủ công' trao đổi các giá trị của hàm Point(), chỉ hoạt động với một góc 90, mà thôi. Khi tạo một đối tượng TranslateTransform với vị trí văn bản và đẩy nó trước khi xoay, sau đó mã sẽ làm việc với bất kỳ góc nào. – user2261015