我需要在顯示一個gif動圖,添加在label里面,但是因為顯示尺寸的問題,我新建了一個控制元件labelEX,在on paint里重寫了以下這段代碼
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
pe.Graphics.DrawImage(this.Image, 0, 0, this.Width, this.Height);
}
可是這樣的話,圖就會顯示兩遍,但是,如果不建一個新的控制元件,只在程式里添加
pe.Graphics.DrawImage(this.Image, 0, 0, this.Width, this.Height);
那么圖就變得不會動了,請問哪位大神能指導一下?
我想實作的是label里面加入gif格式的image,同時圖片是根據label的size來顯示的,拜托各位了.
uj5u.com熱心網友回復:
直接指定Label的Background就行了吧,不用自繪。自繪的GIF的話,需要把每一幀讀出來,依次繪制
uj5u.com熱心網友回復:
background不能顯示動圖,而image可以顯示動圖,但是image不能像background一樣圖片stretch.現在圖是可以動的,只是顯示尺寸問題不知道怎么解決.
uj5u.com熱心網友回復:
AnimateImageuj5u.com熱心網友回復:
我換了一種實作方法,使用picturebox,然后再在picturebox上寫字。設定picturebox的image為gif圖片,sizemode調整為Stretch。
在自定義的picturebox中重寫onpaint()和添加test屬性,代碼如下:
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
this.Font= new System.Drawing.Font("MS UI Gothic", 26F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
SizeF textSize = pe.Graphics.MeasureString(this.Text, this.Font);
pe.Graphics.DrawString(Text, this.Font, Brushes.Black, (this.Width - textSize.Width) / 2, (this.Height - textSize.Height) / 2);
}
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(System.Drawing.Design.UITypeEditor))]
[SettingsBindable(true)]
[CategoryAttribute("表示"), BrowsableAttribute(true), ReadOnlyAttribute(false)]
public override string Text {
set
{
test = value;
}
get
{
return test;
}
}
暫時這樣寫,請各位路過大神看看這樣表達是否合適,不甚感激。
uj5u.com熱心網友回復:
使用picturebox在gif上寫字,參考下 http://bbs.cskin.net/thread-14927-1-1.html
uj5u.com熱心網友回復:
這個辦法蠻好,謝謝哦
uj5u.com熱心網友回復:
sandy_more_wang 兄弟正解uj5u.com熱心網友回復:
用 ImageAnimator 更新幀,然后就和圖片一樣繪制了,想怎么繪制就怎么繪制uj5u.com熱心網友回復:
這個我沒試過,下次我可以試試看,謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/147016.html
標籤:C#
