2012-08-12 39 views
1

我有一個圖像正在被拉伸到其原始大小的3倍的形式顯示。
我想寫入圖像的文本,沒有文本被拉伸。
這是可能的,如果是這樣,怎麼樣?在延伸窗口窗體圖像上寫正常文本

我試圖(在刷新方法):

//On Form   //my Bitmap 
    ImageDisplay.Image = IntensityBMP; 
    Graphics g = Graphics.FromImage(ImageDisplay.Image); 
    g.DrawString("MyText", new Font("Tahoma", 8), Brushes.White, etc); 

and 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     e.Graphics.DrawString("MyText", new Font("Tahoma", 8), etc); 
     base.OnPaint(e); 
    } 

兩個繪製文本預拉伸圖像上,從而產生像素化,過大的文本。

+0

如何/哪裏是圖像被拉伸?如何/在哪裏呈現圖像? – 2012-08-12 23:22:30

+0

PictureBox的SizeMode被設置爲StretchImage。所以你問的是我試圖問的一部分。 – 3Pi 2012-08-12 23:23:41

回答

2

您需要在PictureBox渲染圖像後繪製文本。

或者:

myForm.pictureBox1.Paint += PictureBoxPaintEvent; 
private void PictureBoxPaintEvent(object sender, PaintEventArgs e) 
{ 
    e.Graphics.DrawString("MyText", myFont, ....); 
} 

OR

創建PictureBox派生類和重寫Paint

protected override void OnPaint(PaintEventArgs e) 
{ 
    base.OnPaint(e); 
    e.Graphics.DrawString("MyText", new Font("Tahoma", 8), etc); 
} 
+0

不,不幸的是,OnPaint只是包含圖片框的形式。 – 3Pi 2012-08-13 00:29:13

+0

然後更新了答案。 – 2012-08-13 00:41:43

+0

感謝您的更新。但是,我嘗試了這一點,和以前完全一樣。 – 3Pi 2012-08-13 01:17:46