Page 1 sur 1

Image Survival Guide

Publié : mar. 02/août/2016 16:41
par falsam
Un code que j'ai récupéré sur un site consacré à Purebasic il y a deux ou trois ans. Il me sert quand je rencontre des soucis d'écritures dans des images ou des sprites.

Code : Tout sélectionner

; survival guide 6_3_200 drawing mode
; pb 4.40 - > 5.43
;
Enumeration
  #w_main
  #g_image
  #i_result
EndEnumeration
;
OpenWindow(#w_main,10,10,870,6*130,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
AddKeyboardShortcut(#w_main,#PB_Shortcut_Escape,1)
CreateImage(#i_result,870,6*130,32)
;
StartDrawing(ImageOutput(#i_result))
  ;
  ; top half black
  ;
  DrawingMode(#PB_2DDrawing_Default)
  Box(0,0,870,6*130,RGB(0,0,0))
  ;
  ; first section transparent (alhpa 0)
  ;
  DrawingMode(#PB_2DDrawing_AlphaChannel)
  Box(0,0*130,870,3*130,RGBA(0,0,0,0))
  DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
  DrawText(10,1*130-125,"fully transparent black background",RGBA(255,255,255,255))
  ;
  ; second section half solid (alpha 128)
  ;
  DrawingMode(#PB_2DDrawing_AlphaChannel)
  Box(0,1*130,870,130,RGBA(0,0,0,128))
  DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
  DrawText(10,2*130-125,"half transparent black background",RGBA(255,255,255,255))
  ;
  ; third section solid (alpha 255)
  ;
  DrawingMode(#PB_2DDrawing_AlphaChannel)
  Box(0,2*130,870,130,RGBA(0,0,0,255))
  DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
  DrawText(10,3*130-125,"solid black background",RGBA(255,255,255,255))
  ;
  ; bottom half white
  ;
  DrawingMode(#PB_2DDrawing_Default)
  Box(0,3*130,870,3*130,RGB(255,255,255))
  ;
  ; fourth section transparent (alhpa 0)
  ;
  DrawingMode(#PB_2DDrawing_AlphaChannel)
  Box(0,3*130,870,130,RGBA(0,0,0,0))
  DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
  DrawText(10,4*130-125,"fully transparent white background",RGBA(0,0,0,255))
  ;
  ; fifth section half solid (alpha 128)
  ;
  DrawingMode(#PB_2DDrawing_AlphaChannel)
  Box(0,4*130,870,130,RGBA(0,0,0,128))
  DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
  DrawText(10,5*130-125,"half transparent white background",RGBA(0,0,0,255))
  ;
  ; sixth section solid (alpha 255)
  ;
  DrawingMode(#PB_2DDrawing_AlphaChannel)
  Box(0,5*130,870,130,RGBA(0,0,0,255))
  DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
  DrawText(10,6*130-125,"solid white background",RGBA(0,0,0,255))
  ;
  For row = 0 To 5
    ;
    x = 10
    y = 50+row*130
    ;
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    DrawText(x,y-25,"default",RGBA(255,0,0,255))
    DrawingMode(#PB_2DDrawing_Default)
    Box(x,y,40,40,RGBA(255,0,0,255))
    Box(x+10,y+10,40,40,RGBA(255,0,0,128))
    Box(x+20,y+20,40,40,RGBA(255,0,0,128))
    Box(x+30,y+30,40,40,RGBA(255,0,0,0))
    ;
    x = x+130
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    DrawText(x,y-25,"transparent",RGBA(255,0,0,255))
    DrawingMode(#PB_2DDrawing_Transparent)
    Box(x,y,40,40,RGBA(255,0,0,255))
    Box(x+10,y+10,40,40,RGBA(255,0,0,128))
    Box(x+20,y+20,40,40,RGBA(255,0,0,128))
    Box(x+30,y+30,40,40,RGBA(255,0,0,0))
    ;
    x = x+130
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    DrawText(x,y-25,"xor",RGBA(255,0,0,255))
    DrawingMode(#PB_2DDrawing_XOr)
    Box(x,y,40,40,RGBA(255,0,0,255))
    Box(x+10,y+10,40,40,RGBA(255,0,0,128))
    Box(x+20,y+20,40,40,RGBA(255,0,0,128))
    Box(x+30,y+30,40,40,RGBA(255,0,0,0))
    ;
    x = x+130
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    DrawText(x,y-25,"outlined",RGBA(255,0,0,255))
    DrawingMode(#PB_2DDrawing_Outlined)
    Box(x,y,40,40,RGBA(255,0,0,255))
    Box(x+10,y+10,40,40,RGBA(255,0,0,128))
    Box(x+20,y+20,40,40,RGBA(255,0,0,128))
    Box(x+30,y+30,40,40,RGBA(255,0,0,0))
    ;
    x = x+130
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    DrawText(x,y-25,"blend",RGBA(255,0,0,255))
    DrawingMode(#PB_2DDrawing_AlphaBlend)
    Box(x,y,40,40,RGBA(255,0,0,255))
    Box(x+10,y+10,40,40,RGBA(255,0,0,128))
    Box(x+20,y+20,40,40,RGBA(255,0,0,128))
    Box(x+30,y+30,40,40,RGBA(255,0,0,0))
    ;
    x = x+130
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    DrawText(x,y-25,"clip",RGBA(255,0,0,255))
    DrawingMode(#PB_2DDrawing_AlphaClip)
    Box(x,y,40,40,RGBA(255,0,0,255))
    Box(x+10,y+10,40,40,RGBA(255,0,0,128))
    Box(x+20,y+20,40,40,RGBA(255,0,0,128))
    Box(x+30,y+30,40,40,RGBA(255,0,0,0))
    ;
    x = x+130
    DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Transparent)
    DrawText(x,y-25,"channel",RGBA(255,0,0,255))
    DrawingMode(#PB_2DDrawing_AlphaChannel)
    Box(x,y,40,40,RGBA(255,0,0,255))
    Box(x+10,y+10,40,40,RGBA(255,0,0,128))
    Box(x+20,y+20,40,40,RGBA(255,0,0,128))
    Box(x+30,y+30,40,40,RGBA(255,0,0,0))
    ;
  Next row
StopDrawing()
;
ImageGadget(#g_image,0,0,870,6*130,ImageID(#i_result))
Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow Or event = #PB_Event_Menu
Source quelques part sur ce lien :
http://www.ninelizards.com/purebasic/index.htm#top

Re: Image Survival Guide

Publié : mar. 02/août/2016 17:19
par GallyHC
Bonjour,

Très pratique pour connaitre les combinaisons possibles avec "DrawingMode()". Merci pour le partage.

Cordialement,
GallyHC

Re: Image Survival Guide

Publié : mar. 02/août/2016 18:09
par Zorro
ça a l'air bien :)
mais sort de mon 768 en Y Image

Re: Image Survival Guide

Publié : mer. 03/août/2016 6:07
par Marc56
Merci 8)

Re: Image Survival Guide

Publié : mer. 03/août/2016 8:08
par Micoute
Pourtant ce n'est pas très récent, je l'utilisais déjà avec la PB 4.20

Re: Image Survival Guide

Publié : mer. 03/août/2016 9:38
par Kwai chang caine
C'est joli :wink: ....vu que j'y connais rien, quand à son utilité, c'est tout ce que je peux dire :oops:
Ah non..je peux dire aussi

Image

"MERKI !!" 8) :mrgreen: