alfa - blanding af en bitmap

, ved hjælp af alphablend funktion i delphi, alpha blanding anvendes til at vise en alpha bitmap, der er en, bitmap, der er gennemsigtige og delvist gennemskuelige pixels., foruden en rød, grøn og blå farve kanal, hver pixel, i en alpha bitmap har en gennemsigtighed komponent, kendt som sin alpha - kanalen.alfa - typisk indeholder så mange stykker som et farve tv - kanal.for eksempel en 8 - bit - alpha - kanal kan repræsentere 256 gennemsigtighed, fra 0 (hele bitmap er gennemsigtig) 255 (hele bitmap er uigennemsigtig).alpha blandingsmekanismer påberåbes ved at alphablend funktion.den alphablend funktion viser bitmaps, der er gennemskuelig eller semitransparent pixels.det er ikke støttes på microsoft windows 95 eller versioner af microsofts windows nt - forud for, at microsoft windows 2000.,,, følgende kode stikprøve er et vindue til tre horisontale områder.så det gør en alpha blandet bitmap i hver af vinduet områder.,,, konstant, ac_src_alpha = $1;,,, procedure drawalphablend (hwnd: hwnd; hdcwnd: hdc);,, var, ahdc: hdc; //håndtering af dc - vil vi skabe, bf. blendfunction; //struktur for alpha - blanding, ahbitmap: hbitmap; //bitmap klare, bmi: bitmapinfo; //bitmap header,, pvbits: point; //fingerpeg dib del, ulwindowwidth,,, ulwindowheight: ulong; //vindue bredde /højde, ulbitmapwidth,,, ulbitmapheight: ulong; //////////////bitmap bredde /højde, rt: trect; //, der anvendes for at få vindue dimensioner, begynder, //- vindue dimensioner, getclientrect (hwnd, rt);,,, //calculate vindue bredde /højde,, ulwindowwidth: = rt.right - rt.left;,, ulwindowheight: = rt.bottom - rt.top;,,, //sikre, vi har i det mindste et vindue størrelse, hvis ((ulwindowwidth = 0) og (ulwindowheight = 0), udgang;,,, //dele vinduet til 3 horisontale områder, ulwindowheight: = trunc (ulwindowheight /3), //skabe en dc for vores bitmap... kilden dc for alphablend,, ahdc: = createcompatibledc (hdcwnd);,,, //0 mindet for bitmap info, zeromemory (@ bmi, størrelse (bitmapinfo), //fælde bitmap info, bmi.bmiheader.bisize: = 7 (bitmapinfoheader);,,, bmi.bmiheader.biwidth: = trunc (ulwindowwidth - (ulwindowwidth /5) * 2);,, ulbitmapwidth: = trunc (ulwindowwidth - (ulwindowwidth /5) * 2);,, bmi.bmiheader.biheight: = trunc (ulwindowheight - (ulwindowheight /5) * 2);,, ulbitmapheight: = trunc (ulwindowheight - (ulwindowheight /5) * 2);,, bmi.bmiheader.biplanes: = 1;,, bmi.bmiheader.bibitcount: = 32; //4 8 - bit - komponenter, bmi.bmiheader.bicompression: = bi_rgb;,, bmi.bmiheader.bisizeimage: = ulbitmapwidth * ulbitmapheight * 4.,,, //skabe vores dib afsnit og udvælge de bitmap i washington, ahbitmap: = createdibsection (ahdc, bmi, dib_rgb_colors, pvbits, 0, 0), selectobject (ahdc, ahbitmap);,,, bf.blendop: = ac_src_over;,, bf.blendflags: = 0, bf.sourceconstantalpha: = $7f; //halvdelen af 0xff = 50% åbenhed, bf.alphaformat: = 0; //ignorere kilde - alpha - kanal,,, alphablend (hdcwnd, trunc (ulwindowwidth /5), trunc (ulwindowheight /5), ulbitmapwidth, ulbitmapheight,,, ahdc, 0 0, ulbitmapwidth, ulbitmapheight bf),,,,, bf.blendop: = ac_src_over,,, bf.blendflags: = 0, bf.alphaformat: = ac_src_alpha; //anvende kilde alfa, bf.sourceconstantalpha: = $ff; //uigennemsigtige (deaktivere konstant alfa),,, alphablend (hdcwnd, trunc (ulwindowwidth /5), trunc (ulwindowheight /5 + ulwindowheight), ulbitmapwidth, ulbitmapheight,,, ahdc, 0 0, ulbitmapwidth, ulbitmapheight bf),,, bf.blendop: = ac_src_over;,, bf.blendflags: = 0, bf.alphaformat: = 0, bf.sourceconstantalpha: = $3a;,,, alphablend (hdcwnd, trunc (ulwindowwidth /5), trunc (ulwindowheight /5 + 2 - * ulwindowheight), ulbitmapwidth,,, ulbitmapheight, ahdc, 0 0, ulbitmapwidth,,, ulbitmapheight bf), //gøre rengøring,, deleteobject (ahbitmap);,, deletedc (ahdc);,,,,,,,,,,,



Previous:
Next Page: