1
A
答えて
5
あなたは透明色を受け入れる私の透明なコントロールを使用して不透明プロパティ(0から100)を持つことができます
public class TranspCtrl : Control
{
public bool drag = false;
public bool enab = false;
private int m_opacity = 100;
private int alpha;
public TranspCtrl()
{
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
}
public int Opacity
{
get
{
if (m_opacity > 100)
{
m_opacity = 100;
}
else if (m_opacity < 1)
{
m_opacity = 1;
}
return this.m_opacity;
}
set
{
this.m_opacity = value;
if (this.Parent != null)
{
Parent.Invalidate(this.Bounds, true);
}
}
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle = cp.ExStyle | 0x20;
return cp;
}
}
protected override void OnPaint(PaintEventArgs e)
{
if (!DesignMode)
{
Graphics g = e.Graphics;
Rectangle bounds = new Rectangle(0, 0, this.Width - 1, this.Height - 1);
Color frmColor = this.Parent.BackColor;
Brush bckColor = default(Brush);
alpha = (m_opacity * 255)/100;
if (drag)
{
Color dragBckColor = default(Color);
if (BackColor != Color.Transparent)
{
int Rb = BackColor.R * alpha/255 + frmColor.R * (255 - alpha)/255;
int Gb = BackColor.G * alpha/255 + frmColor.G * (255 - alpha)/255;
int Bb = BackColor.B * alpha/255 + frmColor.B * (255 - alpha)/255;
dragBckColor = Color.FromArgb(Rb, Gb, Bb);
}
else
{
dragBckColor = frmColor;
}
alpha = 255;
bckColor = new SolidBrush(Color.FromArgb(alpha, dragBckColor));
}
else
{
bckColor = new SolidBrush(Color.FromArgb(alpha, this.BackColor));
}
if (this.BackColor != Color.Transparent | drag)
{
g.FillRectangle(bckColor, bounds);
}
bckColor.Dispose();
g.Dispose();
}
base.OnPaint(e);
}
protected override void OnBackColorChanged(EventArgs e)
{
if (this.Parent != null)
{
Parent.Invalidate(this.Bounds, true);
}
base.OnBackColorChanged(e);
}
protected override void OnParentBackColorChanged(EventArgs e)
{
this.Invalidate();
base.OnParentBackColorChanged(e);
}
}
それはラベルではありませんが、あなたがテキストを描画するためのOnPaintコードを変更することができます。
関連する問題
- 1. フェードするもののようにbgをスムーズに変更したい
- 2. MPMoviePlayerControllerコントロールでフェード表示するUIButtonを追加する
- 3. KeyDownイベントを使用してスムーズにコントロールを移動する
- 4. スムーズなカメラの回転(ルック・コントロール)
- 5. jQueryのシンプルなフェード機能がIEでスムーズに実行されない
- 6. コンテナビューとセグメント化コントロールの使用方法をスムーズに
- 7. フェード
- 8. フェードするJavaスライドショースクリプト
- 9. エレメントでフェードする
- 10. WebBrowserコントロールからSilverlight 4のイメージへのスムーズな移行方法
- 11. アンカーリンクでスムーズにスクロールする
- 12. フェードは
- 13. DIVフェード
- 14. Zeptoフェード
- 15. フェードは、
- 16. jQuery UIタブでフェードする
- 17. パネルをフェードする - Windowsフォーム
- 18. 画像を順番にフェードする
- 19. ブートストラップカルーセルにフェード効果を追加する
- 20. DIVが別のDIVにフェードする
- 21. JQueryが疑似クラスにフェードする:ホバー
- 22. 3秒後にテキストをフェードする
- 23. ListViewコントロールがスムーズにスクロールされておらず、しっかりと背景
- 24. dispatch_get_main_queue()がスムーズに
- 25. スライドとフェードjquery
- 26. ファンシーボックス3.0フェード
- 27. CSS jQuery - ショーケースイメージ(フェード)
- 28. フェードはJavascript
- 29. jqueryサムネイルギャラリー - ホバー/フェード
- 30. フェード要素= X
Winformsを使用していますか?そして、あなたは本当にJ#を使っていますか? – svick
はい私はwinformsを使用しています。はい、それはプロジェクトであり、J#を使用する必要があります。あたかもそのC# – user779444