webForumDet fria alternativet

Göra bilder transparenta

.NET

4 svar · 323 visningar · startad av spango

Medlem sedan juni 20008 205 inlägg
Frågan#1

Jag ska rita ut ett par (PNG-)bilder på varandra, och de ska således vara semitransparenta. Mängden genomskinlighet på de olika bilderna ska dock skifta under exekvering, så jag kan inte lösa det genom att använda mig av PNG:s semitransparens. Vad jag skulle behöva är alltså ett sätt att justera alfanivån på en Image (eller liknande). Går detta att lösa med GDI+ eller får man lov att gå över till DirectX för att fixa det?

Medlem sedan juni 20008 205 inlägg
#2

Jahaja, GIYF verkar det som.
http://authors.aspalliance.com/mamanze/articles/?p=mixing

Medlem sedan feb. 200112 078 inlägg
Medlem sedan feb. 200112 078 inlägg
#4

*bump*

Fick du ordning på det? Lite nyfiken på hur pass "enkelt" det är egentligen.

Medlem sedan juni 20008 205 inlägg
#5

Ja, det var tämligen okomplicerat, exempelkoden i länken jag postade gjorde prexis vad jag ville:

  1. Skapa en ColorMatrix och sätt medlem[3, 3] till en float mellan 0 och 1 för alfavärdet.
  2. Stoppa in denna ColorMatrix i en ImageAttributes
  3. Rita ut din Image med den DrawImage-överlagring som tar emot en ImageAttributes.

Funkar bra. Är inte snabbt ;) Vill man rita ut flera bilder på varann rekommenderar jag varmt att man använder en intermediär Image vars Graphics man ritar ut på... eller så går man och hämtar kaffe medan det ritas ut...

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)