[Gambas-user] Gambas2 Grab in Gambas3
Fabien Bodard
gambas.fr at ...626...
Sun Nov 13 09:26:30 CET 2016
2016-11-11 20:16 GMT+01:00 Richard Welch <richardpa608 at ...626...>:
> Fabien, right on the button.
>
> Cached now seems to work for me - when the code was first written in G2
> some years ago, minimising the window blanked the DrawingArea to
> background and overlaying it with a window from another application
> blanked the hidden part of the DrawingArea (I can't now remember if this
> always happened or if it was intermittent, depending on some factor
> which I never identified). Turning on cached did not help. Hence the
> workaround of the use of an invisible PictureBox to backup the image,
> allowing its restoration to be a neat single operation independent of
> the original drawing process.
>
> So I'm happy. What was for you, no doubt, a simple observation has
> saved me a lot of hassle. Thank you.
>
> Richard
It was a pleasure
>
>
> On 09/11/16 17:53, Fabien Bodard wrote:
>> 2016-11-09 17:45 GMT+01:00 Richard Welch <richardpa608 at ...626...>:
>>> Fabien, thank you for your reply.
>>>
>>> There are snags with each of these...
>>>
>>> First approach:
>>>
>>> Although the DrawingArea is often fully visible on screen, sometimes it
>>> will be too big.
>>> I can think of a way round this but it is not very elegant!
>>>
>>> Second approach:
>>>
>>> The image is sometimes highly complex and can comprise hundreds of
>>> rectangles and lines as well as text. I already do use generic
>>> functions as you describe, with variable-driven adjustments to cope with
>>> the differences between printing and screen display. There are many
>>> places in the code which may build a display.
>>>
>>> I found in G2 that there were times when the image in a DrawingArea was
>>> not restored if it was partially covered by a window from another
>>> application and then exposed once more. This mechanism enabled it to be
>>> restored easily without having to rebuild it from scratch. Maybe the
>>> DrawingArea in G3 is more robust?
>> And why not using cached mode ?
>>> Richard
>>>
>>>
>>> On 08/11/16 17:31, Fabien Bodard wrote:
>>>> Well... there is two answers.
>>>>
>>>> First :
>>>>
>>>> Use the Desktop.ScreenShot Function
>>>> (http://gambaswiki.org/wiki/comp/gb.qt4/desktop/screenshot).
>>>> But your widget must be visible on the screen... This is why it is a
>>>> SCREEN shot.
>>>>
>>>>
>>>> Second :
>>>>
>>>> When you are drawing something in a drawingarea you use a generic
>>>> drawing function.
>>>>
>>>> Exemple :
>>>>
>>>>
>>>> Public sub DrawingArea_Draw()
>>>>
>>>> DrawARect()
>>>>
>>>> End
>>>>
>>>>
>>>> Private Sub DrawARect()
>>>>
>>>> Paint.Brush = Brush.Color(Color.Yellow)
>>>> Paint.Rectangle(10,10,Paint.Width - 20, Paint.Height - 20)
>>>> Paint.Fill
>>>>
>>>> End
>>>>
>>>>
>>>> Public Function MakeImage(iWidth as integer, iHeight as integer) as Image
>>>>
>>>> Dim hImage a new Image(iWidth, iHeight, Color.White)
>>>>
>>>> Paint.Begin(hImage)
>>>> DrawARect()
>>>> Paint.End
>>>>
>>>> End
>>>>
>>>>
>>>> With that you have only one drawing function (DrawARect) able to draw
>>>> every where ... even on a printer. This is the way used in most of the
>>>> components too
>>>>
>>>> 2016-11-08 12:52 GMT+01:00 Richard Welch <richardpa608 at ...626...>:
>>>>> I need a simple way to copy the current image in a visible DrawingArea
>>>>> to a hidden PictureBox.
>>>>>
>>>>> The project was written in Gambas2, where a simple Grab method did the
>>>>> trick, but in G3 this does something different so the converted code
>>>>> does not function fully.
>>>>>
>>>>> FMain.pbxPicture.W = FMain.drwRep.W
>>>>> FMain.pbxPicture.H = FMain.drwRep.H
>>>>> FMain.pbxPicture.Background = FMain.drwRep.Background
>>>>> FMain.pbxPicture.Picture = FMain.drwRep.Grab()
>>>>>
>>>>> With what do I replace the Grab method?
>>>>>
>>>>> (The DrawingArea is painted in many different pieces of code, depending
>>>>> on context, so I want to make the change which will have the smallest
>>>>> impact possible on the source code)
>>>>>
>>>>> There is a gambas-user thread started around 19 April 2012.
>>>>> Is this fully relevant?
>>>>> Is this the /simplest/ answer?
>>>>> It would need some very tedious testing in my context.....
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Developer Access Program for Intel Xeon Phi Processors
>>>>> Access to Intel Xeon Phi processor-based developer platforms.
>>>>> With one year of Intel Parallel Studio XE.
>>>>> Training and support from Colfax.
>>>>> Order your platform today. http://sdm.link/xeonphi
>>>>> _______________________________________________
>>>>> Gambas-user mailing list
>>>>> Gambas-user at lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Developer Access Program for Intel Xeon Phi Processors
>>> Access to Intel Xeon Phi processor-based developer platforms.
>>> With one year of Intel Parallel Studio XE.
>>> Training and support from Colfax.
>>> Order your platform today. http://sdm.link/xeonphi
>>> _______________________________________________
>>> Gambas-user mailing list
>>> Gambas-user at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
>>
>
>
> ------------------------------------------------------------------------------
> Developer Access Program for Intel Xeon Phi Processors
> Access to Intel Xeon Phi processor-based developer platforms.
> With one year of Intel Parallel Studio XE.
> Training and support from Colfax.
> Order your platform today. http://sdm.link/xeonphi
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
--
Fabien Bodard
More information about the User
mailing list