2011-11-01 29 views
8

Tôi đang sử dụng phương thức rút gọn của lớp Đồ họa để vẽ một Chuỗi trên Hình ảnh.Vẽ một Văn bản được Xoay sang một Hình ảnh trong C#

g.DrawString(mytext, font, brush, 0, 0); 

Tôi đang cố xoay văn bản theo góc bằng cách sử dụng chức năng xoay chuyển đổi của đối tượng đồ họa để văn bản có thể được vẽ ở mọi góc độ. Làm cách nào tôi có thể sử dụng Xoay chuyển đổi. Các xoay Chuyển đổi Mã i dùng là

Bitmap m = new Bitmap(pictureBox1.Image); 
    Graphics x=Graphics.FromImage(m); 
    x.RotateTransform(30); 
    SolidBrush brush = new SolidBrush(Color.Red); 
    x.DrawString("hi", font,brush,image.Width/2,image.Height/2); 
//image=picturebox1.image 
    pictureBox1.Image = m; 

Các văn bản được rút ra ở một góc xoay nhưng nó không phải được vẽ tại trung tâm như tôi want.Plz giúp tôi ra ngoài.

+1

Hiện chúng tôi xoay chuyển mã mà bạn đã cố gắng. – mbeckish

+0

Bạn có thể hiển thị cho chúng tôi toàn bộ phương thức (ví dụ, đây có phải là sự kiện OnPaint) không? Ngoài ra, bạn có thể cho chúng tôi biết bạn đang nhận được kết quả gì không? – mbeckish

Trả lời

22

Nó không đủ để chỉ RotateTransform hoặc TranslateTranform nếu bạn muốn tập trung các văn bản. Bạn cần phải bù đắp những điểm khởi đầu của văn bản, quá, bằng cách đo nó:

Bitmap bmp = new Bitmap(pictureBox1.Image); 
using (Graphics g = Graphics.FromImage(bmp)) { 
    g.TranslateTransform(bmp.Width/2, bmp.Height/2); 
    g.RotateTransform(30); 
    SizeF textSize = g.MeasureString("hi", font); 
    g.DrawString("hi", font, Brushes.Red, -(textSize.Width/2), -(textSize.Height/2)); 
} 

Từ How to rotate Text in GDI+?

+0

@ LarsTech.Works giống như một Charm.Can bạn giúp tôi làm điều này trong trường hợp của một image.I đã thêm Mã Xin vui lòng xem. – techno

2

trước g.DrawString(mytext, font, brush, 0, 0); sử dụng g.RotateTransform(45);

+0

Tôi đã sử dụng phương pháp này.Plz xem chỉnh sửa. – techno

Các vấn đề liên quan