ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: Прозрачность 2d ARGB ...
Очередное извращение на тему прозрачности
;time=CreateTimer(240)
Const numImage =10
Graphics 800,600,32,2
v=1
ssd=CreateImage(31,31)
SetBuffer ImageBuffer(ssd)
Color 0,255,0
Rect 0,0,31,31,1
Color 0,0,155
Oval 14-10,14-10,20,20,1
SetBuffer BackBuffer()
t= 5*35
While Not KeyHit(1)
Cls
Color 255,0,0
Rect 0,0,t,t,1
Color 0,255,0
Rect 0,t,t,t,1
Color 0,0,255
Rect t,0,t,t,1
Color 255,255,255
Rect t,t,t,t,1
;WaitTimer(time)
For b=0 To numImage
For a=0 To numImage
DrawAlhaImage(ssd ,a*35,b*35,(a*b) Mod 101)
DrawAlhaImage(ssd ,395+a*35,b*35,(a*b) Mod 101)
Next:Next
Color 255,255,255
Text 700,40 , q
Flip
Wend
;FreeTimer time
End
Function DrawAlhaImage(Image%,XP%,YP%,opasity%=1)
W = ImageWidth(Image)
H = ImageHeight(Image)
LockBuffer ImageBuffer(Image)
LockBuffer BackBuffer()
For x = 0 To W - 1
For y = 0 To H - 1
XPX =XP+X : YPY = YP+Y
If x>0 And x<800 And y>0 And y<600 And xpx>0 And xpx<800 And ypy>0 And ypy<600
Background= ReadPixelFast(XPX,YPY,BackBuffer() )
Foreground= ReadPixelFast(X,Y,ImageBuffer(Image))
WritePixelFast XPX,YPY, GetPixelForOpacity( Background, Foreground, opasity)
EndIf
Next
Next
UnlockBuffer ImageBuffer(Image)
UnlockBuffer BackBuffer()
End Function
; pixelCanvasAlpha = 0 убирает черныйе пикселы , pixelCanvasAlpha от 1 до 100 (100 полностью прозрачно)
Function GetPixelForOpacity( pixelBackground, pixelForeground, pixelCanvasAlpha)
if pixelForeground = $FF000000 then pixelForeground = pixelBackground
Return (255 Shl 24 Or ( ((pixelBackground And $00FF0000) Shr 16) * pixelCanvasAlpha/101 + ((pixelForeground And $00FF0000) Shr 16)* ( 100-pixelCanvasAlpha)/101) Shl 16 Or (((pixelBackground And $0000FF00) Shr 8) * pixelCanvasAlpha/101 + ((pixelForeground And $0000FF00) Shr 8)* (100- pixelCanvasAlpha)/101)Shl 8 Or (((pixelBackground And $000000FF))* pixelCanvasAlpha/101 + ((pixelForeground And $000000FF))* (100- pixelCanvasAlpha)/101));
End Function
__________________
Мой проект здесь
Последний раз редактировалось polopok, 06.06.2014 в 16:55.
Причина: дополнение
|