Xojo Conferences
MBSSep2018MunichDE
XDCMay2019MiamiUSA

Platforms to show: All Mac Windows Linux Cross-Platform

/Picture/Picture.CombineMBS
Function:
Required plugins for this example: MBS Main Plugin, MBS Picture Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Picture/Picture.CombineMBS
This example is the version from Sun, 10th Dec 2016.
Project "Picture.CombineMBS.rbp"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
EventHandler Sub Open() withPlugin withoutPlugin End EventHandler
Function Combine(pDestImage As Picture, pImage As Picture, pMask As Picture, pDestX As Integer, pDestY As Integer, pSourceX As Integer, pSourceY As Integer, pWidth As Integer, pHeight As Integer, pUseColours As Boolean, pForeColour As Integer = -65536, pMaskColour As Integer = -65536) As Boolean Dim tileColour As Integer Dim tempImage As Picture If pMask <> Nil Then tileColour = RGB2Int(RGB(0, 0, 0)) End If If pForeColour >=0 Then tileColour = pForeColour End If If pMaskColour >=0 Then tileColour = pMaskColour End If If (pMask = Nil) And (pForeColour <0) And (pMaskColour <0) Then pDestImage.graphics.DrawPicture(pImage, pDestX, pDestY, pWidth, pHeight, pSourceX, pSourceY, pWidth, pHeight) Else tempImage = New Picture(pWidth, pHeight, 32) If pMask <> Nil Then tempImage.graphics.DrawPicture(pImage, 0, 0, pWidth, pHeight, pSourceX, pSourceY, pWidth, pHeight) tempImage.mask.graphics.DrawPicture(pMask, 0, 0, pWidth, pHeight, pSourceX, pSourceY, pWidth, pHeight) Elseif pMaskColour <0 Then tempImage.graphics.ForeColor = Int2RGB(tileColour) tempImage.graphics.FillRect(0, 0, pWidth, pHeight) tempImage.mask.graphics.DrawPicture(pImage, 0, 0, pWidth, pHeight, pSourceX, pSourceY, pWidth, pHeight) Else If pUseColours = True Then tempImage.mask.graphics.ForeColor = Int2RGB(tileColour) Else tempImage.mask.graphics.ForeColor = RGB(0, 0, 0) End If tempImage.mask.graphics.FillRect(0, 0, pWidth, pHeight) tempImage.graphics.DrawPicture(pImage, 0, 0, pWidth, pHeight, pSourceX, pSourceY, pWidth, pHeight) End If pDestImage.graphics.DrawPicture(tempImage, pDestX, pDestY, pWidth, pHeight, 0, 0, pWidth, pHeight) End If Return true End Function
Function Int2RGB(pIntColour As Integer) As Color Dim theRGB As Color Dim r,g,b As Integer r = pIntColour \ 65536 pIntColour = pIntColour - (r * 65536) g = pIntColour \ 256 pIntColour = pIntColour - (g * 256) b = pIntColour theRGB = RGB(r,g,b) return theRGB End Function
Function PrepareDestImage() As Picture dim p as Picture p = new Picture(500,500,32) 'p.Graphics.ForeColor=&cFF7777 'p.Graphics.FillRect 0,0,500,500 'p.Graphics.ForeColor=&c000077 'p.Graphics.FillRect 0,0,500,500 Return p End Function
Function RGB2Int(pRGBColor As Color) As Integer Dim theIntColour As Integer theIntColour = pRGBColor.red * 65536 theIntColour = theIntColour + pRGBColor.green * 256 theIntColour = theIntColour + pRGBColor.blue return theIntColour End Function
Sub withPlugin() dim DestImage As Picture dim Image As Picture dim Mask As Picture dim logo As Picture dim DestX As Integer=0 dim DestY As Integer=0 dim SourceX As Integer=0 dim SourceY As Integer=0 dim Width As Integer=500 dim Height As Integer=500 dim w as window1 logo=LogoMBS(500) image = new Picture(logo.width, logo.height,32) // works for 24 and 32 bit image.Graphics.DrawPicture logo,0,0 Mask=nil DestImage=PrepareDestImage if DestImage.CombineMBS(image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,false,-1,-1) then w=new window1 w.left=0 w.top=50 w.Title="Plugin: no mask, no colors" w.backdrop=DestImage w.show end if DestImage=PrepareDestImage if DestImage.CombineMBS(image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,false,&c777777) then w=new window1 w.Left=500 w.top=50 w.Title="Plugin: with forecolor" w.backdrop=DestImage w.show end if mask = new Picture(500,500,32) mask.Graphics.ForeColor=&cFFFFFF mask.Graphics.Fillrect 0,0,500,500 mask.Graphics.ForeColor=&c000000 mask.Graphics.FillOval 0,0,500,500 DestImage=PrepareDestImage if DestImage.CombineMBS(image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,false,-1,-1) then w=new window1 w.left=0 w.top=550 w.Title="Plugin: with mask" w.backdrop=DestImage w.show end if mask=nil DestImage=PrepareDestImage if DestImage.CombineMBS(image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,true,&c777777,&c777777) then w=new window1 w.Left=500 w.Title="Plugin: with two colors" w.top=550 w.backdrop=DestImage w.show end if System.DebugLog "finished" End Sub
Sub withoutPlugin() dim DestImage As Picture dim Image As Picture dim Mask As Picture dim logo As Picture dim DestX As Integer=0 dim DestY As Integer=0 dim SourceX As Integer=0 dim SourceY As Integer=0 dim Width As Integer=500 dim Height As Integer=500 dim w as window1 logo=LogoMBS(500) image = new Picture(logo.width, logo.height,32) // works for 24 and 32 bit image.Graphics.DrawPicture logo,0,0 Mask=nil DestImage=PrepareDestImage if Combine(DestImage, image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,false) then w=new window1 w.left=1000 w.top=50 w.Title="RB: no mask, no colors" w.backdrop=DestImage w.show end if DestImage=PrepareDestImage if Combine(DestImage, image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,false,&h777777) then w=new window1 w.Left=1500 w.top=50 w.Title="RB: with forecolor" w.backdrop=DestImage w.show end if mask = new Picture(500,500,32) mask.Graphics.ForeColor=&cFFFFFF mask.Graphics.Fillrect 0,0,500,500 mask.Graphics.ForeColor=&c000000 mask.Graphics.FillOval 0,0,500,500 DestImage=PrepareDestImage if Combine(DestImage, image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,false) then w=new window1 w.left=1000 w.top=550 w.Title="RB: with mask" w.backdrop=DestImage w.show end if mask=nil DestImage=PrepareDestImage if Combine(DestImage, image,Mask,DestX,DestY,SourceX,SourceY,Width,Height,true,&h777777,&h777777) then w=new window1 w.Left=1500 w.Title="RB: with two colors" w.top=550 w.backdrop=DestImage w.show end if System.DebugLog "finished" End Sub
End Class
Class Window1 Inherits Window
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
End Project

Feedback, Comments & Corrections

The items on this page are in the following plugins: MBS Picture Plugin.





Links
MBS Xojo Plugins