Przeźroczystość po raz kolejny :/

0

Wiem, że już kilka razy ten temat był poruszany. Ale mój problem jest troszke inny. Na początek chcę zaznaczyć, ż epracuję na systemie WInXp, lecz chciałbym aby mój program działał poprawnie również na starszych platformach. :-)

Chodzi o to, aby pewna część formularza byłą przeźroczysta. Mówię pewna część, gdyż nie zależy mi na przeźroczystości całej formy. Zasadniczo chodzi o 3 wielokąty. Chciałbym się za tym dowiedzieć, czy istnieją komponenty w postaci wielokątów (jak kto woli - łamanych zamkniętych :D), któe posiadają właściwość przeźroczystości i na kytóre można nakładać inne komponenty (Np TImage), aby te rónież były przeźroczyste? Troszkę to zamieszane, ale chyba się połapiecie.
Ewentualnie może być komponent postaci wielokątów, na którym musiałbym wymusić przeźroczystość, ale nie wiem jak sie to robi i gdzie takowego szukać :) No ale jeśli ktoś mi w tym pomoże no to z przeźroczystością Image'a nie będzie problemu :-P

Dzięki za uwagę.
Peace.

// przeZroczystość - ŁF

0

Cześć
Nie wiem czy Cię dobrze zrozumiałem.
Ja to odbieram tak że chcesz zrobić jakąś formę o wyglądzie wielokątu
a na tym wielokącie umieścić jakiś następny wielokąt.
Nie wiem czy dobrze poradzę ale tyle potrafie co zjem - a jem bardzo mało :)
Ja bym wykorzystał do tego celu regiony.
Po pierwsze dał na formę TImage z zawartością bitmapy jakiegoś rysunku wielokąta.
Następnie zrobił procedurę która stworzy pusty region bitmapy -
finalnie wyjdzie Ci sam wielokąt bez formy.
Na tym TImage możesz dawać dalsze bitmapy też "okrojone" o kolor zerowy.
Możesz programowo zmieniać wygląd wielokąta z tym że musisz tak skonstruować procedurę <ort>odświerzania </ort>zawartosci TImage że za każdą zmianą bitmapy będzie wywoływana procedura dotycząca regionu.
A jeśli chodzi o inne komponenty to na pierwszym TImage daj następne TImage i postępuj podobnie co z pierwszym - dać bitmapę jakiegoś kształtu i stworzyć region - i tak wkoło Macieju :))
Wiem ze zamotałem .. mam pewien program w którym tą metodę wykorzystałem i jest tak długi w listingu że uffff... i tak dobrze to sprecyzowałem w paru zdaniach :))

0

Bardzo dobrze zrozumiałeś. :D
Taka opcja mnie zadowala (przynajmniej tak sądze, bo...) lecz na temat regionó mam małe pojęcie :] A właściwie to żadne :-P
Byłbym wdzięczny gdybyś zarzuci tym listningiem. Głównie chodzi o wykorzystanie bitmapy jako 'maski' ort!. No i może jakieś linki do tyvh regionów? :D Poszukam jeszcze w helpie w D5.0, ale zawsze lepiej pogadać z kimś na 'żywca' w rodzimym języku. :)
Czekam na odpowiedź.
Peaaaace.

0

Hehe, jednak forum 4programmers rządzi :D
ZNalazlem już kilka informacji. Zamieszczę je tu, aby było komuś łatwiej odnaleźć się przy podobnym problemie :)

http://www.republika.pl/delphipl/wyklady/region/region.htm
http://4programmers.net/Forum/viewtopic.php?id=39695

To tyle w tym temacie. Pewnie jak mi coś nie wyjdzie to tu jeszcze wrócę :) Więc dodajcie sobie powiadamianie na e-mail :D

Peaaaaaaaace.

0

Witam
po co stosować procedury, fuknkcę

robisz tak, najprostszym sposobem:

na formie klikasz "View as text" i wpisujesz

  AlphaBlend = True
  AlphaBlendValue = 233

np. forma programu tak wygląda:

object Form1: TForm1
  Left = 192
  Top = 114
  Width = 696
  Height = 480
  AlphaBlend = True
  AlphaBlendValue = 233
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
end

efekt zajedwa....

ShowMessage('Niech Delphi będzie z Tobą');

pozdro

0
AlphaBlendValue = 233

nie wiem czy wiesz ale to dziala tylko w 2000 i XP, a autorowi chodzi wlasnie o to zeby dzialalo we wszystkich :P

(Tez mnei ten temat interesuje ;))

0

EUREKA MAM ! :)))
uparłem się na to i coś tam wyszło :))
Jednak udało mi się na podstawie wcześniejszego listingu który podałem
powyżej (Pascal) jakoś to dopasować do Delphi :))
Najważniejszy jest logarytm zawarty w funkcji:
FUNCTION FiltrujKolor(colPix,colBac:TColor;nrFiltra:Byte):TColor;
Nie sprawdzałem to na wieeeelgachnych bitmapach ale spoko
chodzi dość szybko :))
Zresztą kto jest zainteresowany niech poprawia to jak mu pasuje.

{============== Funkcja filtrująca kolor pixela ===========}
FUNCTION FiltrujKolor(colPix,colBac:TColor;nrFiltra:Byte):TColor;
var R,G,B,R2,G2,B2 :TColor;
Begin
//rozkład koloru pixela pobranego z obrazka
R:= GetRValue(colPix);
G:= GetGValue(colPix);
B:= GetBValue(colPix);
//rozkład koloru pixela z podanego tła obrazka
R2:= GetRValue(colBac);
G2:= GetGValue(colBac);
B2:= GetBValue(colBac);
//ustalenie średniej koloru w odpowiednim zestawieniu %
R:= (R * nrFiltra div 255)+(R2-R2*nrFiltra div 255);
G:= (G * nrFiltra div 255)+(G2-G2*nrFiltra div 255);
B:= (B * nrFiltra div 255)+(B2-B2*nrFiltra div 255);
Result:=RGB(R, G, B);
End;
{===== Procedura filtrująca Bitmapę (przezroczystość) =========}
PROCEDURE FiltrujBitmape(nrFiltra:Byte; kolorTla:TColor; bitmapa:TBitmap);
var
x,y :Integer;
col :TColor;
PBA  :PByteArray;
Begin
with bitmapa do
for x:=0 to Height-1 do
begin
PBA:=ScanLine[x]; //zeskanowanie poziomej linii
y:=0;
repeat
col:=bitmapa.Canvas.Pixels[y,x]; //pobiera kolor pixela
col:=FiltrujKolor(col,kolorTla,nrFiltra);  //filtruje kolor pixela
bitmapa.Canvas.Pixels[y,x]:=col; //rysuje sfiltrowany pixel
Inc(y);
until y > bitmapa.Width-1;
end;
End;
//*********************************************************
procedure TForm1.btnFiltrujClick(Sender: TObject);
var
obrazek :TBitmap;
 filtr :Integer;
Begin
obrazek:=TBitmap.Create;
obrazek.LoadFromFile('rysunek.bmp');
filtr:=StrToInt(Edit1.Text); //w edit wpisujesz zakres 0-255
FiltrujBitmape(filtr,clsilver,obrazek);
Form1.Canvas.Draw(0,0,Obrazek); //narysowanie przezroczystego obrazka
beep;
End;
{Ps . zamiast clsilver możemy podać kolor komponentu jako tło
Można by było zrobić że tłem by był inny obrazek wtedy w procedurze
FiltrujBitmape
musiałbyś podać jeszcze jedną linię np:
kolorTla:=bitmapa_pierwsza.Canvas.Pixels[y,x]; }
//----------------------------------------------------------------------------
END.

Baterman :)) zainteresowany jestem czy Ci się to przyda i czy w ogóle
coś Ci to pomoże - kliknij coś
qrde Twój problem stał się moim problemem a miałem przerwe od kompa zrobić haha

0

Inter: Ciesze się, że Ci się udało. Może byś podrzucił jakiś jakiś rpojekt ilustrujący działanie powyższej procki? :> Zawsze lepiej widzieć coś na żywca niż na papierze :-)
Pozdrawiam.

0

:))
A co tu wysyłać ? - przecież podałem pełen listing :))
Otwórz edytor Delphi , daj na formę TEdit i Tbutton.
Wklej w okno edytora funkcję i procedurę co podałem, i wklej
w procedurę buttona to co u mnie + obrazek jakiś przygotuj i tyle :))
Bibliotek żadnych dodatkowych nie potrzeba.
To tylko szkielet - należałoby nawet zmienić linię w której pobierany jest pixel na inną instrukcje niż "bitmapa.Canvas.Pixels[y,x];"
mogłoby być "PBA[y]:=FiltrujKolor(P[kl],kolorTla,nrFiltra);" itd..
Byłoby szybciej.
Wkleiłem tu ten kodzik bo może go ktoś dopracuje i ja też skorzystam ;)

No to wszystkiego najlepszego Tobie i Wszystim życzę z okazji zbliżających się świąt.

0

Ehhh leniwiec jestem i tyle :-)
Zaraz się tym zajmę.

Tak btw, sprawdzałęś czy działa to także przy Form.Canvas?
Tak aby form był półprzeźroczysty?

0
Form1.Canvas.Draw(0,0,Obrazek);

Bez komentarza co do mojej ostatniej odpowiedźi :-D

Dopiero wstałem i troszkę zamotany jestem :-P

0

Coś jest jednak nie tak. :/

Po usunięciu wszystkich błędów kompilacji jakie mi wyskakiwały dodałem komponent TImage i wgrałem tam jakąś bitmapę. POtem odpaliłem to i testowałem na wartościach: '1, 10, 20, 50, 100, 200, 250'. NA żadnej z nich nie zauważyłem aby prześwitywał obrazek jeden przez drugi. :/ No i mój problem z Canvasem, który opisałem wcześniej nie był do końca głupi bo jednak nie o to mi chodziło.
Procka, któa mnie ineteresuje (w moim mniemaniu) powinna wyglądać tak:

  • bada jakich kolorów piksele są pod nią
  • bada jakich kolorów piksele są na niej w odpowiednim miejscu (tzn tym samy co badany piksel z tła)
  • ustawia dla nich wartość pośrednią, aby usyzkaś półprzeźroczystość
  • ustawia tak otrzymane piksele jako swoje płótno

Problemw tym, że przy przeciąganiu formy na bank będą straszne opuźnienia. :/ Ewentualnie możnaby wyłączyć tło podczads przesuwania, ale to poniejkszy walory wizualne efektu. :/

Inter widzę, że nieźle sobie z tym radzisz więc może mi coś poradzisz. :]

Moimi głównymi problremami są:

  • jak odczytać kolory pikseli pod spodem formy?
  • optymalizacja kodu tak, aby to przyzwoicie chodziło

Mam nadzieję, że nie porzucicie tego posta :) Szczególnie Ty, Inter :]

Pozdrawiam.

0

Przepraszam wszystkich za wrzucenie tego barachła poniżej ale
myślę że w inny sposób nie mogę tego wyjaśnić o czym mowa w tym poście <sorki> :)

VAR
  Form1: TForm1;
  Obrazek,ObrazekTlo,BitmapDst :TBitmap;

IMPLEMENTATION {$R *.dfm}
{======== Funkcja filtrująca kolor pixela =================}
FUNCTION FiltrujPix(colPix,colBac:TColor; nrFiltra:Byte):TColor;
var
 R,G,B,R2,G2,B2 :TColor;
Begin
 //rozkład koloru pixela pobranego z obrazka
 R:= GetRValue(colPix);
 G:= GetGValue(colPix);
 B:= GetBValue(colPix);
 //rozkład koloru pixela z podanego tła obrazka
 R2:= GetRValue(colBac);
 G2:= GetGValue(colBac);
 B2:= GetBValue(colBac);
 //ustalenie średniej koloru w odpowiednim zestawieniu %
 R:= (R * nrFiltra div 255)+(R2-R2*nrFiltra div 255) ;
 G:= (G * nrFiltra div 255)+(G2-G2*nrFiltra div 255) ;
 B:= (B * nrFiltra div 255)+(B2-B2*nrFiltra div 255) ;
 Result:=RGB(R,G,B);
End; //ok.
{====== Procedura filtrująca Bitmapę (przezroczystość) ========}
PROCEDURE FiltrujBMP(nrFiltra:Byte;pozX,pozY:Integer; bitmapSrc,bitmapTlo:TBitmap);
var
 kl,ln          :Integer;
 Pba1,Pba2,Pba3 :PByteArray;
Begin
 bitmapDst.Assign(bitmapSrc);  //przepisanie zawartości bitmap
 for ln:=0 to bitmapDst.Height-1 do
 begin
  Pba1:=bitmapSrc.ScanLine[ln]; //skan linii z bitmapy żródłowej
  Pba2:=bitmapTlo.ScanLine[ln+pozY]; //skan linii z bitmapy tła
  Pba3:=BitmapDst.ScanLine[ln]; //skan linii dla bitmapy docelowej
  kl:=0;
  repeat
    //ustawia wartość pośrednią dla pix. bitmapy docelowej
    Pba3[kl]:=FiltrujPix(Pba1[kl],Pba2[kl+pozX * 3],nrFiltra,);
    Inc(kl);
  until kl > bitmapDst.Width * 3; //mnożnik dla bitmap 24 bitowych
 end;
End; //ok.
//*******************************************************

//Kreowanie okna a zarazem wczytanie obrazków do zmiennych
PROCEDURE TForm1.FormCreate(Sender: TObject);
Begin
 bitmapDst:= TBitmap.Create;   //bitmapa obrazka po "sfiltrowaniu"
 Obrazek:= TBitmap.Create;    //bitmapa obrazka do "sfiltrowania"
 ObrazekTlo:= TBitmap.Create; //bitmapa obrazka jako tła
 Obrazek.LoadFromFile('Obrazek.bmp');
 ObrazekTlo.LoadFromFile('Tło.bmp');
End; //ok.

{tu klikasz na button i pojawia się "półprzezroczysty" obrazek na tle
innego obrazka :)) }
PROCEDURE TForm1.btnFiltrujClick(Sender: TObject);
var
 Filtr:Byte;
 kl,ln :Integer;
Begin
 Canvas.Draw(0,0,ObrazekTlo); //narysowanie obrazka tła
 Filtr:=StrToInt(Edit1.Text); //wartość pobrana z edita (0-255)
 {pozycja obrazka na obrazku tła - musi być taka sama dla obu
 poniższych instrukcji (Filtruj.. i Canvas..)
 obrazek filtrowany powinien zawierać się w granicach obrazka tła i nie
 powinien "wyłazić" za tło}
 kl:=100; ln:=20;
 FiltrujBMP(Filtr,kl,ln,obrazek,ObrazekTlo);
 Canvas.Draw(kl,ln,bitmapDst); {narysowanie obrazka "półprzezroczystego"}
End; //ok.

END.
  • bada jakich kolorów piksele są pod nią
  • bada jakich kolorów piksele są na niej w odpowiednim miejscu (tzn tym samy co badany piksel z tła)
  • ustawia dla nich wartość pośrednią, aby usyzkaś półprzeźroczystość
  • ustawia tak otrzymane piksele jako swoje płótno

Prawie wszystko co wypunktowałeś Baterman ;)
Problem będzie z formą "półprzezroczystą" - jako tło trzeba by wziąć
cały ekran :)) a zawartość ekranu stale się zmienia w zależności od
otworzonych okienek. Pobierzesz wycinek ekranu na którym będzie
Twoja forma a pod nią jakieś okno. Te okno zamkniesz i już musiałbś
znowu aktualizować sfiltrowany obszar. To robota dla docentów a ja
zwykły amator jestem :))
A to co zapodałem na 100% teraz chodzi jest proste jak drut ;)
Uparłem się na "półprzezroczyste" bitmapy wsadzisz je w TImage będą
TImage półprzezroczyste ale do Form już za cienki jestem ;)
Zresztą może ktoś coś tu poprawi - hmm...

0

Hehehe, ;] Dzięki za pomoc - przyda się bankowo.

Ja ciągle szukam tego rozwiązania z formem.
Znalazłem komponenty:
Glassy
nviac
Semi Panel
Stained Glass

Sprawdziłem na razie tylko te dwa podkreślone. Teraz nie będe miał czasu, więc może Inter Ty obadasz co z tamtymi dwoma :D Oczywiście jeśli chcesz. Dorwałem je na http://www.torry.net

Dam znać jak coś jeszcze znajdę.

Bye

P.S. W jakimś helpie do tych komponentów znalazłem sposób na nasza przeźroczystość. Operuje na komunikatach. Zamieszczam tutaj jego ttreść. Ja niestety nie kumam za bardzo tych komunikatów, więc raczej tego nie ruszę. Przynajmniej na razie :-(

[code]How it works.

Internal Windows' algorithm of windows redrawing does not allow
semitransparent windows creation. So it has to be beaten. Therefore
such windows sometimes work wrong. I haven't noticed this to lead to
any system instabilities.

The semitransparent window works as the follow: before redrawing
it hides itself from the screen, waits for a fixed time for other
windows to catch to redraw, then stores the screen image, shows
itself again and draws its background by mixing its own picture with
the stored screen image. This mixing makes an illusion of
semitransparency. How so the system does not inform the window
that all other windows have redrawn themselves, we have the only
way that is to wait for a fixed time and than be that as it may.
The default interval is 300 milliseconds, but I urge you to
experiment with it by yourself and then choose its value according
to your own, not my, experience. While experimenting you will
see all limitations of the semitransparent window.

TStainedGlass needs much memory for storing all its pictures.
It can be up to 4.5 Mb to be used constantly and up to 2.25 Mb
more while redrawing. In addition to this the component needs
memory for Glyph property storing. The real amount of memory
depends on the screen resolution and the window size.[/code]

0

Cześć :))
Ja tam już mam swoją "półprzezroczystość"
Właściwy kod wpakowałem w osobny moduł (przyda się do różnych programików)
Podaję go poniżej razem z kodem programiku demonstrującego :))

//Moduł: modBitmap 
UNIT modBitmap;
INTERFACE
Uses Windows,SysUtils,Graphics;
//Procedura rozkłada kolor na składowe RGB
PROCEDURE GetRGB(col:TCOLOR; var r,g,b:BYTE);
//Funkcja pobiera wspólny kolor pixela z dwu podanych kolorów
FUNCTION GetPixFilter(col,colBackground:TCOLOR; Filter:BYTE):TCOLOR;
//Procedura filtrująca Bitmapę (półprzezroczystość)
PROCEDURE FiltrujBMP(pozX,pozY:INTEGER;     
                                  bitmapSrc,bitmapTlo:TBITMAP; Filter:BYTE);

VAR
BitmapDST :TBitmap;
 
IMPLEMENTATION
{==== Procedura rozkłada kolor na składowe RGB =====}
PROCEDURE GetRGB(col:TCOLOR; var r,g,b:BYTE);
Begin
R:= GetRValue(col);
G:= GetGValue(col);
B:= GetBValue(col);
End; 
{= Funkcja pobiera wspólny kolor pixela z dwu podanych kolorów ===}
FUNCTION GetPixFilter(col,colBackground:TCOLOR; Filter:BYTE):TCOLOR;
var
 r,g,b,r2,g2,b2 :BYTE;
Begin
//rozkład koloru pixela pobranego z obrazka
GetRGB(col, r,g,b);
//rozkład koloru pixela z podanego tła obrazka
GetRGB(colBackground, r2,g2,b2);
//ustalenie średniej koloru w odpowiednim zestawieniu %
R:= (r * Filter div 255) + (r2-r2 * Filter div 255);
G:= (g * Filter div 255) + (g2-g2 * Filter div 255);
B:= (b * Filter div 255) +( b2-b2 * Filter div 255);
Result:=RGB(R, G, B);
End;
{=== Procedura filtrująca Bitmapę (półprzezroczystość) =====}
PROCEDURE FiltrujBMP(pozX,pozY:INTEGER; bitmapSrc,bitmapTlo:TBITMAP; Filter:BYTE);
var
kl,ln :INTEGER;
Pba1,Pba2,Pba3 :PByteArray;
Begin
 BitmapDst.Assign(bitmapSrc);     //przepisanie zawartości bitmap
for ln:=0 to BitmapDst.Height-1 do
 begin
  try
    Pba1:=bitmapSrc.ScanLine[ln];   //skan linii z bitmapy żródłowej
    Pba2:=bitmapTlo.ScanLine[ln+pozY];    //skan linii z bitmapy tła
    Pba3:=BitmapDst.ScanLine[ln];     //skan linii dla bitmapy docelowej
   except
  end;
  kl:=0;
  repeat
    //ustawia wartość pośrednią dla pix. bitmapy docelowej (BitmapDst)
    Pba3[kl]:=GetPixFilter(Pba1[kl],Pba2[kl+pozX * 3],Filter);
    Inc(kl);
  until kl > bitmapDst.Width * 3;  //mnożnik dla bitmap 24 bitowych
 end;
 bitmapTlo.Canvas.Draw(pozX,pozY,BitmapDst);  //przerysowanie
End; 
{-- Instrukcje do wykonania podczas załadowania modułu ----}
INITIALIZATION
bitmapDst:= TBitmap.Create;    //wykreowanie bitmapy obrazka po "sfiltrowaniu"
{-- Instrukcje do wykonania podczas zakończenia pracy modułu -------}
FINALIZATION
bitmapDst.Free   //zwolnienie bitmapy obrazka po "sfiltrowaniu"
END.

Unit FiltrujBitmapeForm;
INTERFACE
Uses
modBitmap, //moduł zawiera procedury do "półprzezroczystości"
Windows, Messages, SysUtils,  Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

Type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    btnFiltruj: TButton;
    PROCEDURE btnFiltrujClick(Sender: TObject);
    PROCEDURE FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
VAR
  Form1: TForm1;
  Obrazek,Obrazek2,ObrazekTlo :TBitmap;

IMPLEMENTATION {$R *.dfm}

//********************************************************
//Kreowanie okna a zarazem wczytanie obrazków do zmiennych
PROCEDURE TForm1.FormCreate(Sender: TObject);
Begin
 ObrazekTlo:= TBitmap.Create; //bitmapa obrazka jako tła
 ObrazekTlo.LoadFromFile('Tło.bmp');
 Obrazek:= TBitmap.Create;    //bitmapa obrazka1 do "sfiltrowania"
 Obrazek2:= TBitmap.Create;    //bitmapa obrazka2 do "sfiltrowania"
 Obrazek.LoadFromFile('Obrazek.bmp');
 Obrazek2.LoadFromFile('Obrazek2.bmp');
End; //ok.
{tu klikając na button pojawiają się "półprzezroczyste" obrazki na tle }
PROCEDURE TForm1.btnFiltrujClick(Sender: TObject);
var
 Filtr1,Filtr2:Byte;
Begin
 Filtr1:=StrToInt(Edit1.Text); //1-sza wartość pobrana z edita (0-255)
 Filtr2:=StrToInt(Edit2.Text); //2-ga wartość pobrana z edita (0-255)
 {pobranie "orginalnego" obrazka tła - można by to robić z
 jakiejś przygotowanej zmiennej np: obrazekTloOrg zamiast ciągłego
 wczytywania z dysku :)) }
 ObrazekTlo.LoadFromFile('Tło.bmp');

 {używając poniższego pobierasz tło pulpitu
 ObrazekTlo.canvas.handle:=GetWindowDC(GetDesktopWindow); }

 {rysowanie na tle obrazka , "półprzezroczystych" obrazków
 - podając kolumne,linie obrazek do sfiltrowania oraz sam filtr }
 FiltrujBMP(100,20,obrazek,ObrazekTlo,Filtr1);  //tu wartość z edita
 FiltrujBMP(140,30,obrazek2,ObrazekTlo,Filtr2); //tu wartość z edita
 {narysowanie już gotowego tła z "półprzezroczystymi" obrazkami}
 Image1.Canvas.Draw(0,0,ObrazekTlo); {narysowanie obrazka "półprzezroczystego"}
 {używając poniższego rysujesz półprzezroczyte bitmapy na pulpicie
 ObrazekTlo.canvas.handle:=GetWindowDC(GetDesktopWindow); }
End; //ok.
{PS. można dawać obrazków ile się chce, zmieniać pozycje, filtr ,
dawać opcję obrazek.Transparent:=true i tu Baterman możesz umieścić
obrazek wielokąta :)) wyjdzie sam wielokąt bez tła
a na koniec to wszystko odświeżać "Image1.Canvas.Draw(0,0,ObrazekTlo)" }
END.

Czuje pismo nosem że można to na wszelkie sposoby wykorzystywać :))
i dla TImage i dla pulpitu - może nawet i dla formy :)) łącząc to z
regionami - kto chętny niech to zmienia bo ja orłem nie jestem :))

0

No cóż.. ja na razie poświęcam się innym zagadnieniom. :/
Jak się troszkę podszkoleto do tego wrócę. :-)
Pozdrawiam wszystkich. Jak coś o piszcei na meila. :-)

Bye.

1 użytkowników online, w tym zalogowanych: 0, gości: 1