stimmt von ??? |
das stimmt ja das das nicht überschritten werden darf und das dann alles schrott geht. Hatte ich zuerst bei meiner alpha blending func auch. Habs denn durch normales alphablending ersetzt: [code:1:222842c4bc] 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 [/code:1:222842c4bc] hör grad Rammstein. RAMMSTEIN!!!! :mrgreen: |
von ??? |
Sone ähnliche Funktion (bzw. tonnenweise solcher Funktionen (die anderen, die das Forum früher oft besucht haben, wissen bescheid)) habe ich auch früher geschrieben. Auch immer mit Rausfiltern der Farbkanäle nach ROT, GRÜN und BLAU, danach Zusammenmixen mit den neuen Farbinformationen und dann wieder zusammenkleben und ausgeben. Das ist auch die "natürliche" Vorgehensweise, aber dauert ewig, damit habe ich früher schon gekämpft - der Computer hat meistens bzw. immer gewonnen. Das Besondere an meinem Code ist ja eigentlich nur, dass ich blindlinks die gesamten Formeln rausgeworfen habe, und somit keine Rechenzeit mehr ansteht. :) Ein kleiner Tipp: Du brauchst den Buffer nicht auszulesen, wenn du ihn fixieren willst (Buffer = GraphicsBuffer() : LockBuffer Buffer : UnlockBuffer Buffer) - du kannst das alles abkürzen durch "LockBuffer()" und "UnlockBuffer()", spart Rechen- und Tipparbeit in geringem Maße ;) :D |
von ??? |
das geht... :?: coooooooooooooooooooooooooooooool.... lol 8) |