PureBasic Forum
https://www.purebasic.fr/english/

Drawing transparent images to windows
https://www.purebasic.fr/english/viewtopic.php?f=5&t=2906
Page 1 of 1

Author:  BackupUser [ Tue Nov 13, 2001 1:58 am ]
Post subject: 

Restored from previous forum. Originally posted by Shagwana.

Right, been a while since i last run pure :(. But here I am trying to code my 2d map editor init!. I have figured out how to draw images using the drawimage() command and how to have them inverted with the drawingmode() command. The next problem i have is;

How do I draw transparent images to windows? nb : not alfa images!. Say for example I have a game sprite on a blue background (0,0,255). I want to be able to draw the said image to a window, and not have the blue colour drawn at all!.

I have tryed setting the background color to 0,0,255 (using backcolour())then drawing the image using a drawingmode(1), which should in theroy work :), but dont!.

What follows is some example code of my problem, what i am trying to do is to get the blue circle to be see through - so that i can see the text that is behind in the circle.

Code:
 
If OpenWindow(0, 100, 100, 300, 200, $10CF0000, "2D Drawing Test")

  ; Create an offscreen image, with a green circle in it.
  ; It will be displayed later
  ;
  If CreateImage(1, 100, 100)
;  If LoadImage(1,"image1.bmp")     
    If StartDrawing(ImageOutput())
      BackColour(0,0,255)
      FrontColour(255,255,255)   ;White colour
      Box(0,0,100,100)
      FrontColour(0,0,255)       ;Blue that i want to make see-through
      Circle(50, 50, 30)
      StopDrawing()
    EndIf
  EndIf
 
  ;
  ; This is the 'event loop'. All the user actions are processed here.
  ; It's very easy to understand: when an action occurs, the EventID
  ; isn't 0 and we just have to see what have happened...
  ;
 
  Repeat

    Repeat
      EventID.l = WaitWindowEvent()
    Until EventID  0

    If EventID = #PB_EventRepaint   ; If the user has resized the window or anything, we will repaint our graphic
      Gosub SomeGraphics
    EndIf

  Until EventID = #PB_EventCloseWindow  ; If the user has pressed on the close button
 
EndIf

End   ; All the opened windows are closed automatically by PureBasic


;
; Some 2D graphics functions...
;

SomeGraphics:

  StartDrawing(WindowOutput())

  BackColour(0,0,255) ; Change the text back and front colour
  FrontColour(255,255,255)

  Locate(10, 10)
  DrawText("Hello, background drawn")
  DrawingMode(1)
  Locate(10, 30)
  DrawText("Hello, only text")
 
  Locate(10, 90)
  DrawText("THIS SHOULD BE VISABLE") 
     
  DrawingMode(1)

  DrawImage(ImageID(), 50, 50) ; Display our image !

  StopDrawing() ; This is absolutely needed when the drawing operations are finished !!! Never forget it !

Return 


http://www.sublimegames.com

Page 1 of 1 All times are UTC + 1 hour
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/