Imagefuncs von ??? |
ein paar image functionen von mir durch robs alphaplot hab ich jetzt auch alpha blending eingebaut: [code:1:f4d6976b35] ;----------------------------------------------- Function DrawTBlock(DTimg,x,y,frame=0,alpha=0) ;v. 2.01 ;alpha 0-100 für Transparenz (0=nicht sichtbar,100=völllig sichtbar) ;ansonsten so wie bei DrawBlock If DTimg <> 0 Then buffer=GraphicsBuffer() imgY = ImageHeight(DTimg) imgX = ImageWidth(DTimg) s6=2 If s<> 1 Then modeS=3 If s=1 Then modeS=1:s3=5 If s = 1 Then modeS=2:s3=3 If modeS=2 Then s5=1:s4=s3:s6=s3+1 If modeS=3 Then s5=1:s4=1:s6=2 LockBuffer buffer For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then imgData(1,xx,yy) = ReadPixelFast(xx,yy) Next Next UnlockBuffer buffer DrawBlock DTimg,x,y,frame LockBuffer buffer For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then imgData(2,xx,yy) = ReadPixelFast(xx,yy) Next Next For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then rgb = ImgData(1,xx,yy) rgb2 = ImgData(2,xx,yy) r = (rgb2 And $FF0000)/$10000 g = (rgb2 And $FF00)/$100 b = rgb2 And $FF read_rot = (rgb And $FF0000)/$10000 read_gruen = (rgb And $FF00)/$100 read_blau = rgb And $FF final_rot = read_rot + (alpha * (r - read_rot) / 100) final_gruen = read_gruen + (alpha * (g - read_gruen) / 100) final_blau = read_blau + (alpha * (b - read_blau) / 100) WritePixelFast xx,yy, final_rot * $10000 + final_gruen * $100 + final_blau End If Next Next UnlockBuffer buffer End If End Function ;----------------------------------------------- Function DrawTImage(DTimg,x,y,frame=0,alpha=0) ;v. 2.10 ;alpha 0-100 für Transparenz (0=nicht sichtbar,100=völllig sichtbar) ;ansonsten so wie bei DrawImage If DTimg <> 0 Then buffer=GraphicsBuffer() imgY = ImageHeight(DTimg) imgX = ImageWidth(DTimg) s6=2 If s<> 1 Then modeS=3 If s=1 Then modeS=1:s3=5 If s = 1 Then modeS=2:s3=3 If modeS=2 Then s5=1:s4=s3:s6=s3+1 If modeS=3 Then s5=1:s4=1:s6=2 LockBuffer buffer For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then imgData(1,xx,yy) = ReadPixelFast(xx,yy) Next Next UnlockBuffer buffer DrawImage DTimg,x,y,frame LockBuffer buffer For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then imgData(2,xx,yy) = ReadPixelFast(xx,yy) Next Next For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then rgb = ImgData(1,xx,yy) rgb2 = ImgData(2,xx,yy) r = (rgb2 And $FF0000)/$10000 g = (rgb2 And $FF00)/$100 b = rgb2 And $FF read_rot = (rgb And $FF0000)/$10000 read_gruen = (rgb And $FF00)/$100 read_blau = rgb And $FF final_rot = read_rot + (alpha * (r - read_rot) / 100) final_gruen = read_gruen + (alpha * (g - read_gruen) / 100) final_blau = read_blau + (alpha * (b - read_blau) / 100) WritePixelFast xx,yy, final_rot * $10000 + final_gruen * $100 + final_blau End If Next Next UnlockBuffer buffer End If End Function ;----------------------------------------------- Function DrawImageColor(DTimg,x,y,frame,r,g,b,alpha,rr,gg,bb) ;v. 2.10 ;WICHTIG: FUNKTIONIERT NUR IM 32 BIT MODUS!!! ;alpha 0-100 für Transparenz der Farbe (0=nicht sichtbar,100=völllig sichtbar) ;r,g,b für die Farbe die darüber gesetzt werden soll ;rr,gg,bb für die MaskColor ;ansonsten so wie bei DrawImage If DTimg <> 0 Then buffer=GraphicsBuffer() imgY = ImageHeight(DTimg) imgX = ImageWidth(DTimg) s6=2 If s<> 1 Then modeS=3 If s=1 Then modeS=1:s3=5 If s = 1 Then modeS=2:s3=3 If modeS=2 Then s5=1:s4=s3:s6=s3+1 If modeS=3 Then s5=1:s4=1:s6=2 LockBuffer buffer For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then imgData(1,xx,yy) = ReadPixelFast(xx,yy) Next Next UnlockBuffer buffer DrawBlock DTimg,x,y,frame LockBuffer buffer For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then imgData(2,xx,yy) = ReadPixelFast(xx,yy) Next Next For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then rgb = ImgData(2,xx,yy) If Not ( ( (rgb And $FF0000)/$10000 )=rr And ( (rgb And $FF00)/$100 )=gg And ( rgb And $FF )=bb ) Then read_rot = (rgb And $FF0000)/$10000 read_gruen = (rgb And $FF00)/$100 read_blau = rgb And $FF final_rot = read_rot + (alpha * (r - read_rot) / 100) final_gruen = read_gruen + (alpha * (g - read_gruen) / 100) final_blau = read_blau + (alpha * (b - read_blau) / 100) WritePixelFast xx,yy, final_rot * $10000 + final_gruen * $100 + final_blau Else WritePixelFast xx,yy,ImgData(1,xx,yy) End If End If Next Next UnlockBuffer buffer End If End Function ;----------------------------------------------- Function DrawSWImage(DTimg,x,y,frame,rr,gg,bb) ;v. 2.10 ;WICHTIG: FUNKTIONIERT NUR IM 32 BIT MODUS!!! ;rr,gg,bb für die MaskColor ;ansonsten so wie bei DrawImage If DTimg <> 0 Then buffer=GraphicsBuffer() imgY = ImageHeight(DTimg) imgX = ImageWidth(DTimg) LockBuffer buffer For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then imgData(1,xx,yy) = ReadPixelFast(xx,yy) Next Next UnlockBuffer buffer DrawBlock DTimg,x,y,frame LockBuffer buffer For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then imgData(2,xx,yy) = ReadPixelFast(xx,yy) Next Next For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then rgb = ImgData(2,xx,yy) If Not ( ( (rgb And $FF0000)/$10000 )=rr And ( (rgb And $FF00)/$100 )=gg And ( rgb And $FF )=bb ) Then rgb2 = ImgData(2,xx,yy) r = (rgb2 And $FF0000)/$10000 g = (rgb2 And $FF00)/$100 b = rgb2 And $FF If Not (r<1 And g<1 And b<1) Then swrgb=(r+g+b)/3 Else swrgb=0 final_rot = swrgb final_gruen = swrgb final_blau = swrgb WritePixelFast xx,yy, final_rot * $10000 + final_gruen * $100 + final_blau Else WritePixelFast xx,yy,ImgData(1,xx,yy) End If End If Next Next UnlockBuffer buffer End If End Function ;----------------------------------------------- Function DrawSWBlock(DTimg,x,y,frame=0) ;v. 2.10 ;WICHTIG: FUNKTIONIERT NUR IM 32 BIT MODUS!!! ;funktioniert so wie bei DrawBlock If DTimg <> 0 Then buffer=GraphicsBuffer() imgY = ImageHeight(DTimg) imgX = ImageWidth(DTimg) DrawBlock DTimg,x,y,frame LockBuffer buffer For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then imgData(2,xx,yy) = ReadPixelFast(xx,yy) Next Next For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then rgb = ImgData(2,xx,yy) rgb2 = ImgData(2,xx,yy) r = (rgb2 And $FF0000)/$10000 g = (rgb2 And $FF00)/$100 b = rgb2 And $FF swrgb=(r+g+b)/3 final_rot = swrgb final_gruen = swrgb final_blau = swrgb WritePixelFast xx,yy, final_rot * $10000 + final_gruen * $100 + final_blau End If Next Next UnlockBuffer buffer End If End Function ;----------------------------------------------- Function DrawNImage(DTimg,x,y,frame,rr,gg,bb) ;v. 2.10 ;WICHTIG: FUNKTIONIERT NUR IM 32 BIT MODUS!!! ;rr,gg,bb für die MaskColor ;ansonsten so wie bei DrawImage If DTimg <> 0 Then buffer=GraphicsBuffer() imgY = ImageHeight(DTimg) imgX = ImageWidth(DTimg) LockBuffer buffer For yy = y To y+imgY For xx = x To x+imgX If xx<640 And yy<480 Then imgData(1,xx,yy) = ReadPixelFast(xx,yy) Next Next UnlockBuffer buffer DrawBlock DTimg,x,y,frame LockBuffer buffer For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then imgData(2,xx,yy) = ReadPixelFast(xx,yy) Next Next For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then rgb = ImgData(2,xx,yy) If Not ( ( (rgb And $FF0000)/$10000 )=rr And ( (rgb And $FF00)/$100 )=gg And ( rgb And $FF )=bb ) Then rgb2 = ImgData(2,xx,yy) r = (rgb2 And $FF0000)/$10000 g = (rgb2 And $FF00)/$100 b = rgb2 And $FF final_rot = 255-r final_gruen = 255-g final_blau = 255-b WritePixelFast xx,yy, final_rot * $10000 + final_gruen * $100 + final_blau Else WritePixelFast xx,yy,ImgData(1,xx,yy) End If End If Next Next UnlockBuffer buffer End If End Function ;----------------------------------------------- Function DrawNBlock(DTimg,x,y,frame=0) ;v. 2.10 ;WICHTIG: FUNKTIONIERT NUR IM 32 BIT MODUS!!! ;funktioniert so wie bei DrawBlock If DTimg <> 0 Then buffer=GraphicsBuffer() imgY = ImageHeight(DTimg) imgX = ImageWidth(DTimg) DrawBlock DTimg,x,y,frame LockBuffer buffer For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then imgData(2,xx,yy) = ReadPixelFast(xx,yy) Next Next For yy = y To y+(imgY-1) For xx = x To x+(imgX-1) If xx<640 And yy<480 Then rgb = ImgData(2,xx,yy) rgb2 = ImgData(2,xx,yy) r = (rgb2 And $FF0000)/$10000 g = (rgb2 And $FF00)/$100 b = rgb2 And $FF final_rot = 255-r final_gruen = 255-g final_blau = 255-b WritePixelFast xx,yy, final_rot * $10000 + final_gruen * $100 + final_blau End If Next Next UnlockBuffer buffer End If End Function [/code:1:f4d6976b35] hoffe ihr könnt sie gebrauchen. leider gehen die meisten nur im32 bit modus :( echt toll für 16 bitler... 8) :mrgreen: |
von ??? |
Kannst du mal vor die Funktionen für alle Funktionen ein oder mehrere Beispiele coden? Ich und ich glaube alle anderen haben bestimmt nicht viel Lust sich erst über die exakte Anwendung der Funktionen im Klaren zu werden und eigene Testbefehle zu schreiben (und mit den ganzen Parametern weiss man nicht so genau, was die besten Beispiele für das Testen sind). Merci! Ich hoffe es macht nicht allzuviel Umstände... :roll: |