Panelin transparent özelliği
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Panelin transparent özelliği
Merhaba formumda panel bileşenleri kullandım . Sorunum şu ki panelleri bir türlü transparent yapamadım. Ana formumda image bileşeni ile arkaplana resim atadım dolayısı ile üstünde kullandığım tüm panellerin transparent olmasını istiyorum veya renksiz. Fakat panel bileşenlerinin transparent özelliğini bulamadım. Harici komponentte kullanmak istemedim. Nasıl yapabileceğim hakkında fikirlerinizi payaşırsanız sevinirim.
Teşekürler.
Teşekürler.
Re: Panelin transparent özelliği
Abilerimiz yememiş içmemiş bizler için unit yazmış güle güle kullanın
Kod: Tümünü seç
unit uAlphaTransPanel;
interface
uses
windows, graphics, classes, ExtCtrls, messages;
type
TPanel = class(ExtCtrls.TPanel)
protected
procedure Paint; override;
private
fAlphaVal : Byte;
fBmpParent: TBitmap;
fBmpOwn : TBitmap;
procedure FSetAlphaVal(AValue: Byte);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property AlphaBlendValue: Byte read fAlphaVal write FSetAlphaVal default 255;
end;
implementation
constructor TPanel.Create(AOwner: TComponent);
begin
fAlphaVal := 255;
fBmpParent := TBitmap.Create;
fBmpOwn := TBitmap.Create;
inherited Create(AOwner);
end;
destructor TPanel.Destroy;
begin
inherited Destroy;
fBmpOwn.Free;
fBmpParent.Free;
end;
procedure TPanel.FSetAlphaVal(AValue: Byte);
begin
if (AValue <> fAlphaVal) then
begin
fAlphaVal := AValue;
Invalidate;
end;
end;
procedure TPanel.Paint;
var LOldCanvas: TCanvas;
LBlendFunc: TBlendFunction;
begin
if (fAlphaVal < 255) and HandleAllocated and Assigned(Parent) then
begin
fBmpOwn.Width := Width;
fBmpOwn.Height := Height;
LOldCanvas := Canvas;
PPointer(@Canvas)^ := fBmpOwn.Canvas;
inherited Paint;
PPointer(@Canvas)^ := LOldCanvas;
fBmpParent.Width := Parent.Width;
fBmpParent.Height := Parent.Height;
Parent.Perform(WM_ERASEBKGND, fBmpParent.Canvas.Handle, 0);
Parent.Perform(WM_PAINT, fBmpParent.Canvas.Handle, 0);
LBlendFunc.BlendOp := AC_SRC_OVER;
LBlendFunc.BlendFlags := 0;
LBlendFunc.SourceConstantAlpha := not(fAlphaVal);
LBlendFunc.AlphaFormat := 0;
AlphaBlend(fBmpOwn.Canvas.Handle, 0, 0, Width, Height,
fBmpParent.Canvas.Handle, Left, Top, Width, Height, LBlendFunc);
BitBlt(Canvas.Handle, 0, 0, Width, Height, fBmpOwn.Canvas.Handle, 0, 0, SRCCOPY);
end else
inherited;
end;
end.
Kod: Tümünü seç
Panel1.AlphaBlendValue := 127;// default 255 tam görünüm
gideceği limanı bilmeyen gemiye hiçbir rüzgar yardım edemez...
Kod: Tümünü seç
Delete from hayat where cins="çıkarcılar"
Re: Panelin transparent özelliği
Yardım için teşekkürler fakat o abilerin yazdığını ben bir türlü kullanamadım
Denediğim şeyler
1) Yeni bir unit yaratıp verdiğin kodu ekledim ve programın olduğu klasöre kaydettim. Projemde uses ekleyerek çağırmayı denedim olmadı.
2) Yaratmış olduğum pas dosyasını delphi xe6 nın lib klasörüne attım. İnstall component diyerek hata almadan yükledim fakat komponent çubuğunda bulamadım.
( Delhixe6 ya bir türlü alışamadım komponent yüklemek, arayüz hepsi resmen değişmiş ordan onu yap burdan bunu yap şeklinde tam eziyet. )
Acaba hatam nerde ? nasıl yapmam gerekli.
Teşekürler
Denediğim şeyler
1) Yeni bir unit yaratıp verdiğin kodu ekledim ve programın olduğu klasöre kaydettim. Projemde uses ekleyerek çağırmayı denedim olmadı.
2) Yaratmış olduğum pas dosyasını delphi xe6 nın lib klasörüne attım. İnstall component diyerek hata almadan yükledim fakat komponent çubuğunda bulamadım.
( Delhixe6 ya bir türlü alışamadım komponent yüklemek, arayüz hepsi resmen değişmiş ordan onu yap burdan bunu yap şeklinde tam eziyet. )
Acaba hatam nerde ? nasıl yapmam gerekli.
Teşekürler
Re: Panelin transparent özelliği
uniti oluşturup kaydedin daha sonra burdaki uses e dahil edip deneyin çalıştığını göreceksiniz olmazsa bağlanığp bakabilirim .
Kod: Tümünü seç
unit uReportDetayAktar;
interface
uses
gideceği limanı bilmeyen gemiye hiçbir rüzgar yardım edemez...
Kod: Tümünü seç
Delete from hayat where cins="çıkarcılar"
Re: Panelin transparent özelliği
Şuan çalıştı teşekkürler. Gariptir ki implementation altında uses ile çağırdığımda çalışmadı yukarıdaki uses ta ekleyince çalıştı.
Re: Panelin transparent özelliği
Aslında garip değil: implementation altında uniti eklediğinizde, kendi panelinizin tanımı daha önce olduğu için bu ayarlar geçersiz oldu. Önce unit'i ekleyip sonra kendi panelinizi tanımladığınızda bu unit'teki ayarlar sizin panele eklenmiş olur.Lord_Ares yazdı:Şuan çalıştı teşekkürler. Gariptir ki implementation altında uses ile çağırdığımda çalışmadı yukarıdaki uses ta ekleyince çalıştı.
There's no place like 127.0.0.1
- barisatalay
- Üye
- Mesajlar: 398
- Kayıt: 02 Nis 2013 05:43
- İletişim:
Re: Panelin transparent özelliği
SimaWB yazdı:Aslında garip değil: implementation altında uniti eklediğinizde, kendi panelinizin tanımı daha önce olduğu için bu ayarlar geçersiz oldu. Önce unit'i ekleyip sonra kendi panelinizi tanımladığınızda bu unit'teki ayarlar sizin panele eklenmiş olur.Lord_Ares yazdı:Şuan çalıştı teşekkürler. Gariptir ki implementation altında uses ile çağırdığımda çalışmadı yukarıdaki uses ta ekleyince çalıştı.
+1
Yeni bloğum: http://brsatalay.blogspot.com.tr/
Re: Panelin transparent özelliği
SimaWB bu bilgi için çok teşekkürler yeni bir şey daha öğrenmiş oldum. Ellerine sağlık. Eğer başarabilirsem bu uniti component olarak eklemeyi deneyeceğim.