c # - Indstil x og y koordinater i Draw billede dynamisk

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg ændrer størrelsen på et billede ved hjælp af DrawImage.


Graphics.DrawImage(SourceImage,0,0,200,200);


Her starter kildebilledet med koordinater 0.

Antag, at jeg skal beregne x- og y-koordinaterne dynamisk, hvordan skal jeg gå om det?

Som standard skal billedet starte med placering 20 (dvs.; x) og 20 (dvs. y).

Hvis jeg ændrer størrelsen på formularen, skal den beregnes proportionalt i henhold til den ændrede billedformat, betyder det, hvis det som standard er 20, end for formularens størrelse, hvor meget?


Tak

Bedste reference


Du kan registrere til ResizeEnd begivenhed af formularen og kan omdanne billedet. Noget som;


    public Form1()
    {
        InitializeComponent();

        this.ResizeEnd += new EventHandler(Form1\_ResizeEnd);

    }

    void Form1\_ResizeEnd(object sender, EventArgs e)
    {
        //draw the image again using the related calculation
    }

Andre referencer 1


Fra dit spørgsmål er det ikke klart, hvordan størrelsen af ​​formen vedrører de ønskede koordinater.


En formular har en ClientRectangle egenskab, som du kan bruge til at beregne koordinaterne med. Hvis du f.eks. Vil vise billedet i nederste højre hjørne, ville du:


protected override void OnPaint(PaintEventArgs e)
{
    int x = this.ClientRectangle.Width - 200;
    int y = this.ClientRectangle.Height - 200;
    e.Graphics.DrawImage(SourceImage, x, y, 200, 200);
}


Jeg antager, at DrawImage -koden er i en Paint hændelseshåndterer, så kan du enten



  • brug SetStyle(ControlStyles.ResizeRedraw, true); i formkonstruktoren, så kaldes Paint, når formularen er ændret

  • Tilføj en begivenhedshåndterer til Resize -hændelsen og ring Invalidate(); selv