2015-12-17 23 views
6

enter image description here Công cụ này tôi đã viết trong Visual Basic 2010 sẽ thêm văn bản tác giả vào hình ảnh. Người dùng có thể đặt độ mờ và vị trí phông chữ. Để làm cho mọi thứ dễ dàng hơn, tôi muốn một số cài đặt trước vị trí như người ta có thể thấy ở góc dưới cùng bên phải. Việc tính tôi đang sử dụng là (dưới bên phải trong trường hợp này:Đặt văn bản trong Hình ảnh trên các cạnh

Dim textSize As Size = TextRenderer.MeasureText(tagString + curText, curFont) 
tmpPos = New Point(srcImg.Width - textSize.Width - 10, srcImg.Height - textSize.Height - 10) 

Như bạn thấy làm việc này một cách hoàn hảo ví dụ ảnh này Trong trường hợp như trên một số văn bản chỉ clip ra enter image description here

Đầu Một.. : 1024x768 | Detected cỡ chữ: 680x72

Second Một: 1688x1125 | Detected Font Size: 680x72

tôi nghi ngờ điều này có cái gì để làm với các tỉ lệ của hình ảnh nhưng tôi không biết làm thế nào để sửa nó.

Văn bản được vẽ như thế:

brush = New SolidBrush(color.FromArgb(alpha, color)) 
     gr = Graphics.FromImage(editImg) 
     gr.DrawString(tagString + text, font, brush, pos) 
     HauptBild.Image = editImg 

tôi thấy http://www.codeproject.com/Articles/20923/Mouse-Position-over-Image-in-a-PictureBox này và nó đã trả lời câu hỏi của tôi.

+0

bạn có thể bao gồm mã đặt văn bản không? –

+0

pls thêm một số mã, bạn có thể chỉ cần đặt mã sửa đổi hình ảnh? –

+0

Một số mã thực sự hữu ích – Ian

Trả lời

1

sự cố này chỉ xảy ra trong bản xem trước của bạn hay cũng trong tệp được chuyển đổi? Vui lòng đăng Mã để bạn lưu Hình ảnh mới. Tôi nghĩ rằng bạn đã thiết lập một Sizemode trong picturebox của bạn đó là vấn đề. Hãy thử nó mà không có sizemode.

0

Sẽ tốt hơn để xem thêm mã của bạn, nhưng, theo tôi hiểu bởi lớp TextRenderer, đó là System.Windows.Forms. Chỉ cần không sử dụng đồ họa, tạo ra từ kiểm soát (tôi cho rằng đó là pictureBox với sizemode: Zoom), sử dụng đồ họa, tạo ra từ hình ảnh của bạn để thay thế.

Đây là mã (xin lỗi, C#), tải hình ảnh từ tệp, vẽ văn bản bắt đầu từ cùng tọa độ và địa điểm trên puctureBox1. Văn bản luôn bắt đầu từ điểm (100.100).

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

    openFileDialog1.Filter = "Image files|*.jpeg;*.png;*.jpg;*.gif;*.bmp"; 
    if(openFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     try 
     { 
      Bitmap orig=(Bitmap)Bitmap.FromFile(openFileDialog1.FileName); 
      //workaround for images with color table, see remarks here https://msdn.microsoft.com/en-us/library/system.drawing.graphics.fromimage(v=vs.110).aspx 
      Bitmap bmp=orig.Clone(new Rectangle(0, 0, orig.Width, orig.Height), System.Drawing.Imaging.PixelFormat.Format32bppPArgb); 
      Graphics g = Graphics.FromImage(bmp); 
      g.DrawString("hello", new Font(this.Font.FontFamily,30,FontStyle.Bold) , new System.Drawing.SolidBrush(System.Drawing.Color.Yellow), new Point(100, 100)); 
      this.pictureBox1.Image = bmp; 
      orig.Dispose(); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Something goes wrong: " + ex.Message+ "\\n"+ ex.StackTrace); 
     } 
    } 
Các vấn đề liên quan