DelphiͼÏñ´¦Àí
ÉèÖÃͼÏñ¹Ø¼üÑÕÉ«£¬Ê¹Í¼ÏñµÄijÖÖ»òij¸ö·¶Î§µÄÑÕÉ«³ÉΪ͸Ã÷É«£¬ÊÇͼƬºÏ³É¡¢¶¯»ÏÔʾÖо³£ÓõÄͼÏñ´¦ÀíÊֶΡ£ÏÂÃæÊÇʵÏÖ´úÂ룺
¹ý³Ì¶¨Ò壺
// ÉèÖÃÉ«¼ü£¨Í¸Ã÷·¶Î§£©¡£colorLow µÍÉ«¼üÖµ; colorHigh ¸ßÉ«¼üÖµ
// µ±ÏñËØA¡¢R¡¢G¡¢Bֵͬʱ´óÓÚµÈÓÚcolorLowºÍСÓÚµÈÓÚcolorHighʱΪ͸Ã÷É«
procedure ImageSetColorKey(Data: TImageData; ColorLow, ColorHigh: LongWord);
// °´×ø±êÑÕÉ«ÉèÖÃÉ«¼ü¡£x,y ͼÏñ×ø±êµã, Precision É«¼üÈݲî
procedure ImageSetColorKeyPoint(Data: TImageData; x, y: Integer; Precision: LongWord);
ʵÏÖ´úÂ룺
procedure ImageSetColorKey(Data: TImageData; ColorLow, ColorHigh: LongWord);
procedure ColorKeyEQ(Data: TImageData; ColorKey: LongWord);
asm
punpckldq mm2, mm2 // mm2 = ColorKey ColorKey
mov eax, ecx
shr ecx, 1 // ÿ´Î±È½Ï2¸öÏñËØ
@yLoop:
push ecx
@xLoop:
dec ecx
js @@1
movq mm0, [edi] // mm0 = A1 R1 G1 B1 A0 R0 G0 B0
pcmpeqd mm0, mm2 // °´32λÊý¶Ô2¸öÏñËØ½øÐбȽÏ
pandn mm0, [edi] // ±È½Ï½á¹ûÈ¡·ÇºóͬÔÏóËØÖµ×÷ÓëÔËËã
movq [edi], mm0 // ´æÈë½á¹û
add edi, 8
jmp @xLoop
@@1:
test eax, 1 // ±È½Ï¿ÉÄÜ´æÔÚµÄ×îºóÒ»¸öÏñËØ
jz @@2
movd mm0, [edi]
pcmpeqd mm0, mm2
movd ecx, mm0
not ecx
and [edi], ecx
add edi, 4
@@2:
pop ecx
add edi, ebx
dec edx
jnz @yLoop
end;
procedure ColorKeyArea(Data: TImageData; ColorLow, ColorHigh: LongWord);
asm
pxor mm7, mm7 // ±È½ÏÃüÁîÊǰ´ÓзûºÅÊý½øÐеģ¬Òò´Ë
punpcklbw mm2, mm7 // ColorLow°´×Ö½ÚÀ©Õ¹Îª×Ö
punpcklbw mm3, mm7 // ColorHigh°´×Ö½ÚÀ©Õ¹Îª×Ö
@yLoop:
push ecx
@xLoop:
movd mm0, [edi] // mm0 = 00 00 00 00 A R G B
punpcklbw mm0, mm7 // mm0 = 00 A 00 R 00 G 00 B
movq mm1, mm2
pcmpgtw mm1, mm0 // ±È½Ï ColorLow ÊÇ·ñ´óÓÚ mm0
Ïà¹ØÎĵµ£º
DelphiµÄTCanvasÒÔ¼°ÅÉÉúÀàÌṩÁËÏÔʾTGraphicͼÏñµÄ·½·¨Draw£¬ÆäʵÕâ¸ö·½·¨±¾Éí²¢Ã»ÓÐÏÔʾͼÏñµÄ¹¦ÄÜ£¬Ö»ÊÇ·´¹ýÀ´µ÷ÓÃÁËÒ»ÏÂTGraphicµÄDraw·½·¨¡£TGraphic±¾ÉíÊǸö³éÏóÀ࣬ÆäDraw·½·¨Ò²ÊǸö´¿Ðé·½·¨£¬ËùÒÔTGraphicµÄËùÓÐÅÉÉúÀà±ØÐëÌṩһ¸ö¾ßÌåµÄDraw·½·¨¡£TGraphicµÄÖ÷ÒªÅÉÉúÀàTBitmapÒ²ÓÐÒ»¸öDraw·½· ......
CSDNÂÛ̳ÖУ¬¾³£¿´µ½ÓÐ¹Ø½ØÆÁµÄÌù¡£Ëùν½ØÆÁ£¬Ö¸µÄÊÇ»ñÈ¡ÆÁÄ»£¬»òÕ߯ÁÄ»ÉÏij¸ö´°¿ÚÉϵÄÐÅÏ¢£¬²¢½«Æäת»»ÎªÍ¼ÏñµÄ²Ù×÷¡£Îª´Ë£¬Ò²Ð´Á˼¸¸öWindowsÏµē½ØÆÁ”º¯Êý£º
¹ý³Ì¶¨Ò壺
// »ñÈ¡CanvasÓÐÐ§ÇøÓòÄÚµÄͼÏñÊý¾Ý¡£±ØÐëÓÃFreeImageDataÊÍ·ÅÊý¾Ý½á¹¹
// Ó¦µ÷ÓÃImageEmpty¼ì²é·µ»ØÊý¾Ý½ ......
ͼÏñÐýת£¬ÊÇÖ¸°´ÕÕ¸ø¶¨µÄ½Ç¶È£¬¼ÆËã³öͼÏñÿ¸öÏñËØ×ø±êµãÔÚÐÂͼÏñÉϵÄ×ø±êλÖ㬴ӶøÊµÏÖÕû¸öͼÏñ×ø±ê±ä»»µÄͼÏñ´¦ÀíÊֶΡ£ÆäÏñËØ×ø±êµÄ±ä»»¹«Ê½Îª£º
(1)¡¢x' = x * cos(angle) + y * sin(andle)
y' = ......
µÚÒ»Õ DELPHIµÄÔ×ÓÊÀ½ç
µÚ¶þÕ DELPHIÓëWIN32ʱ¿Õ
µÚÈýÕ ¶àÏß³Ì
µÚËÄÕÂ ½Ó¿Ú
µÚÎåÕÂ °ü
µÚÁùՠʼþÓëÏûÏ¢
µÚÆßÕ ×éÖ¯ÄãµÄÄ£¿é
µÚ°ËÕ ̽Ë÷Êý¾Ý¿â
µÚ¾ÅÕ ¶à²ãÌåϵ½á¹¹
µÚʮՠ²Ù×÷½çÃæÓë²Ù×÷Âß¼
µÚʮһÕÂ ÃæÏò¶ÔÏóÊý¾Ý¿â»ù´¡
µÚÎåÕÂ&n ......
µÚÒ»Õ DELPHIµÄÔ×ÓÊÀ½ç
µÚ¶þÕ DELPHIÓëWIN32ʱ¿Õ
µÚÈýÕ ¶àÏß³Ì
µÚËÄÕÂ ½Ó¿Ú
µÚÎåÕÂ °ü
µÚÁùՠʼþÓëÏûÏ¢
µÚÆßÕ ×éÖ¯ÄãµÄÄ£¿é
µÚ°ËÕ ̽Ë÷Êý¾Ý¿â
µÚ¾ÅÕ ¶à²ãÌåϵ½á¹¹
µÚʮՠ²Ù×÷½çÃæÓë²Ù×÷Âß¼
µÚʮһÕÂ ÃæÏò¶ÔÏóÊý¾Ý¿â»ù´¡
¿Õ ......