昨天一朋友問到Windows窗體中圖片透明的問題
申明
OK
引言——沒有透明度的Windows窗體
如果你制作一些包括圖片和標簽的復雜的窗體
即使
實際上
在本文中
如何制作透明標簽
使圖片作為背景而標簽或文字在其前面進行顯示是否真的很容易?
在下面
有二種方法
這樣
首先
最後
這樣
使用GDI+來繪制圖片的透明度
使繪制的圖像真正的透明有一點麻煩
對於更為復雜的圖像和圖形處理
我們會做的是建立一個通用的控件
繪制通用圖像控件
首先
此外
using System;
using System
using System
using System
/// <summary>
///自定義繪制圖形和文字的透明度
///繼承DrawingArea和覆蓋OnDraw方法
/// </summary>
abstract public class DrawingArea : Panel
{
/// <summary>
/// 在OnDraw方法中使用此對象
/// </summary>
protected Graphics graphics;
/// <summary>
/// 在子類中應該要重寫此方法
/// </summary>
abstract protected void OnDraw();
}
我們需要確保我們的控件背景透明度進行正確的處理
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base
cp
return cp;
}
}
現在
首先
首先要重寫OnPaintBackground方法
第二件事是需重寫OnPaint方法
protected override void OnPaintBackground(PaintEventArgs pevent)
{
// 不要繪制背景
}
protected override void OnPaint(PaintEventArgs e)
{
this
// 設置顯示的效果質量屬性
this
System
this
System
this
System
this
System
OnDraw();
}
我還定義了一個DrawText方法以及一些變量
使用控制繪制圖片和文字與透明
現在
class BroculosDrawing : DrawingArea
{
protected override void OnDraw()
{
// 獲取資源
Image broculoImage = global::WindowsApplication
// 設置圖片的屬性
int width = broculoImage
int height = broculoImage
Rectangle big = new Rectangle(
Rectangle small = new Rectangle(
(int)(
// 繪制二張圖片
this
this
// 設置文字的屬性
float fontSize =
Point textPosition = new Point(
DrawText(
}
}
這將使用兩個圖片和一些文字(類似於之前的)
我們可以像其它控件一樣使用這個控件
結論
現在你知道如何利用圖像的透明度了吧
應用這方面的知識並做更多一點的工作
希望它能給你帶來幫助
原文地址
本文源碼下載
作者
出處
版權說明
From:http://tw.wingwit.com/Article/program/net/201311/12306.html