Mix dva bitmapa

Mix dva bitmapa

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Potrebna mi je pomoc oko kopiranja jednog bitmapa preko drugog, gde je drugi transparentan i ima opacity.

U sustini, funkcija treba preko postojece slike da ubaci polu-providan tekst.

          bmp2.Transparent := True;           bmp2.TransparentMode := tmFixed;           bmp2.TransparentColor := clWhite;           bmp1.Canvas.Draw(bmp2.Width - 400, bmp2.Height -300, bmp2);
Ovaj gore kod ce iskopirati jedan bitmap preko drugog, uzevsi u obzir i transparentnost.
Postoji li nacin da se i opacity ukljuci u ovo na brzaka, ili mora da se radi proracun pixel po pixel?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Jedno pitanje? Da li u obzir dolazi i koriscenje third party komponenti? Graphics32 je skup funkcija i klasa koje su optimizovena za rad sa 32 bitnim slikama (R, G, B, A). Imas standardne klase kao sto su TBitmap32, TImage32 i slicno. Rade mnogo brze od standardnih Delphi kontrola. Koriste GDI+ ako se dobro secam (davno sam to proveravao).

Uz pomoc Graphics32 bi jednostavno samo mogao da nacrtas jednu sliku i preko nje drugu (na recimo TBitmap32 canvas) i to je to. Crtanje uzima u obzir alpha kanal.



offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Srki, evo o cemu se konkretno radi...
Napravio sam program koji trenutno koristi jako puno ljudi:
http://malzilla.sourceforge.net/
Koristi se recimo na SANS institutu u Bostonu, koriste ga i firme tipa Symantec, Kaspersky itd.
Ono sto mi ide na zivce je sto neki od njih, kada postavljaju screenshotove na svojim sajtovima, onda iseku gore caption forme, koliko da se ne vidi "Malzilla by bobby".
Hteo sam nekako da zastitim screenshotove time sto bih ubacio neki tekst preko celog programa.
Background image ne zavrsava posao, jer bi onda sve komponente na formi morale da budu delom providne.
Ako ubacim foreground, onda ne moze da se klikce kroz slova foregrounda.
Zadnje sto pokusavam je hook PrtSc tastera (odradio sam vec), tako da se foreground ubacuje samo na slike koje idu na Clipboard kada Windows radi screenshot.
Sada se pitam koliko je to uopste korisno, posto mogu da koriste neki program za pravljenje screenshotova koji uopste ne koristi PrtSc hotkey...

Pocinjem da se pitam da li mozda uzaludno trosim vreme.

Imas li mozda neku dobru ideju sta bih mogao da uradim da mi ne rade vise crop screenshotova kada ih postavljaju na svoje sajtove?

Vidi recimo sta je radio Symantec:
https://forums.symantec.com/syment/blog/article?message.uid=314811
https://forums.symantec.com/syment/blog/article?message.uid=315519

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Nazalost, povodom toga ne mozes nista da uradis. Cak i da stavis neku transparentnu sliku preko cele forme koja bi se stalno videla tako da nema veze da li ljudi koriste PrtSc, ta slika bi se jednostavno uklonila ili bar toliko sakrila da se ne vidi tvoj tekst. To bi mogli da urade cak i u Paint-u za par minuta.

Da sam na tvom mestu, ja bih uradio sledece: predpostavljam da koristis najobicniji TMemo za prikaz skripti na stranici. Mogao bi da joj zamenis WndProc i da na poruku WM_ERASEBKGND odreagujes tako sto ces neku sliku baciti umesto samo beliog pravoguaonika. To mi se cini kao najlakse resenje, ali i dalje nikog ne sprecava da sliku posle obrade u nekom programu Sad

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Koristim TUniSynEdit (zbog Unicodea): http://mh-nexus.de/en/unisynedit.php
Razmisljao sam o WM_ERASEBKGND (nasao sam primere ranije na netu), ali nisam hteo da cackam same komponente da ne bih posle razbijao glavu kada mi zabaguje program, da li je do toga sto sam menjao komponente, ili do neceg desetog.

U svakom slucaju hvala, izgleda da ne vredi da se puno trudim oko ovoga posto, kao sto i ti kazes, sve moze da se kasnije otkloni i u Paintu.

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Koliko znam, TUniSynEdit vec ima property Background ili tako nesto slicno. Samo mu dodeli neku slicicu i eto... bolje ista nego nista Smile

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Hmm... ne vidim nigde da ima background.
Moze samo background color za highlightere da se podesi, i to je jedino gde se spominje ta rec.
Ajd, bas cu da pogledam detaljno, ali prosli put kada sam trazio nisam nasao nista.

offline
  • rejn 
  • Novi MyCity građanin
  • Pridružio: 02 Okt 2008
  • Poruke: 16

Hmm, ja mislim (mozda gresim) da tebi treba handle-ovanje WM_PRINTCLIENT. Imao sam iskustva sa ovim ranije samo se ne secam svih detalja, ali kako MSDN neumoljivo kaze Very Happy

WM_PRINTCLIENT
The WM_PRINTCLIENT message is sent to a window to request that it draw its client area in the specified device context

Probaj da debugujes svoju aplikaciju kada se odradi capture ekrana (pomocu print screen ili nekog capture programa) i pogledaj da li windows salje u windowproc WM_PRINTCLIENT. Ako salje ovaj msg, lako ces uspeti da preprintas svoj cenjeni copyleft preko njega Mr. Green

Ko je trenutno na forumu
 

Ukupno su 810 korisnika na forumu :: 30 registrovanih, 9 sakrivenih i 771 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Sale, A.R.Chafee.Jr., amaterSRB, BasCelik, Cobi026, Drug pukovnik, Georgius, goxin, ikan, Kaplar2, ljuba, manda87, mercedesamg, milos.cbr, misa2, nenad81, panonski mornar, royst33, S-lash, Skywhaler, Smiljke, Srki98, stegonosa, Tas011, theNedjeljko, time, Trpe Grozni, vathra, vlvl, wizzardone