<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno dom 18 ott 2020 alle ore 14:31 Tobias Boege <<a href="mailto:taboege@gmail.com">taboege@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sun, 18 Oct 2020, KKing wrote:<br>
> So I want to load a png, then draw some rectangles on it and resave it.<br>
> <br>
> Any pointers, after reading and searching I'm just confused by Draw, Paint,<br>
> DrawingArea, PictureBox etc.<br>
> <br>
<br>
Draw is the old and meanwhile deprecated interface. Between Draw and Paint,<br>
you should always go for Paint. You do not need a DrawingArea or a Picture-<br>
Box to draw on a picture and save it to disk. Those two are for displaying<br>
pictures on your form. You .Load the picture, paint on it and .Save it.<br>
<br>
If you have never used Paint before, it can take some time to get used to.<br>
First, you have to establish a painting context on your picture by wrapping<br>
Paint.Begin and Paint.End calls around your painting. Then, the painting<br>
model consists of adding "paths" and either stroking or filling those paths.<br>
<br>
To draw a rectangle on a picture hPic, you do<br>
<br>
  Paint.Begin(hPic)<br>
    ' Define an invisible path for drawing a rectangle at<br>
    ' X=10, Y=20 with Width=50, Height=100.<br>
    Paint.Rectangle(10, 20, 50, 100)<br>
<br>
    ' Stroke the path in red and do not delete the path afterwards,<br>
    ' we'll use it again.<br>
    Paint.Brush = Paint.Color(&H00ff0000&) ' ARGB color (fully opaque red)<br>
    Paint.Stroke(True)<br>
<br>
    ' Fill the rectangle in semitransparent blue (reuses the previous path).<br>
    Paint.Brush = Paint.Color(&H800000ff&)<br>
    Paint.Fill() ' path is automatically deleted<br>
  Paint.End()<br>
<br>
> Also why does<br>
>     PictureBox1.Picture = Picture.Load("/media/user01/Test01.png")<br>
> work but<br>
>   myPicture = New Picture<br>
>   myPicture.Load("/media/user01/Test01.png")<br>
>   PictureBox1.Picture = myPicture<br>
> does not ?<br>
> <br>
<br>
Picture.Load is a static method of the Picture class. It loads a file and<br>
returns a new picture. You seem to be thinking that myPicture.Load would<br>
fill myPicture, but it doesn't. You load the new picture, throw it away<br>
and assign Null to the PictureBox with the second snippet.<br>
<br>
Best,<br>
Tobias<br></blockquote><div><br></div><div>I hadn't received Tobias' mail yet, he is a true teacher.<br><br>I would follow his directions :-)<br><br>Regards<br>Gianluigi <br></div></div></div>