[Gambas-user] drawing rectangles on a picture.

Gianluigi bagonergi at gmail.com
Sun Oct 18 15:03:08 CEST 2020


Il giorno dom 18 ott 2020 alle ore 14:31 Tobias Boege <taboege at gmail.com>
ha scritto:

> On Sun, 18 Oct 2020, KKing wrote:
> > So I want to load a png, then draw some rectangles on it and resave it.
> >
> > Any pointers, after reading and searching I'm just confused by Draw,
> Paint,
> > DrawingArea, PictureBox etc.
> >
>
> Draw is the old and meanwhile deprecated interface. Between Draw and Paint,
> you should always go for Paint. You do not need a DrawingArea or a Picture-
> Box to draw on a picture and save it to disk. Those two are for displaying
> pictures on your form. You .Load the picture, paint on it and .Save it.
>
> If you have never used Paint before, it can take some time to get used to.
> First, you have to establish a painting context on your picture by wrapping
> Paint.Begin and Paint.End calls around your painting. Then, the painting
> model consists of adding "paths" and either stroking or filling those
> paths.
>
> To draw a rectangle on a picture hPic, you do
>
>   Paint.Begin(hPic)
>     ' Define an invisible path for drawing a rectangle at
>     ' X=10, Y=20 with Width=50, Height=100.
>     Paint.Rectangle(10, 20, 50, 100)
>
>     ' Stroke the path in red and do not delete the path afterwards,
>     ' we'll use it again.
>     Paint.Brush = Paint.Color(&H00ff0000&) ' ARGB color (fully opaque red)
>     Paint.Stroke(True)
>
>     ' Fill the rectangle in semitransparent blue (reuses the previous
> path).
>     Paint.Brush = Paint.Color(&H800000ff&)
>     Paint.Fill() ' path is automatically deleted
>   Paint.End()
>
> > Also why does
> >     PictureBox1.Picture = Picture.Load("/media/user01/Test01.png")
> > work but
> >   myPicture = New Picture
> >   myPicture.Load("/media/user01/Test01.png")
> >   PictureBox1.Picture = myPicture
> > does not ?
> >
>
> Picture.Load is a static method of the Picture class. It loads a file and
> returns a new picture. You seem to be thinking that myPicture.Load would
> fill myPicture, but it doesn't. You load the new picture, throw it away
> and assign Null to the PictureBox with the second snippet.
>
> Best,
> Tobias
>

I hadn't received Tobias' mail yet, he is a true teacher.

I would follow his directions :-)

Regards
Gianluigi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20201018/f0fbcbd5/attachment-0001.htm>


More information about the User mailing list