Laden...

Koordinaten System

Erstellt von Blue_Dragon vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.540 Views
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 17 Jahren
Koordinaten System

Hi!

Wisst ihr eine möglichkeit wie mir in GDI+ ein eigens Koordinatensytem machen kann?

ich hätte gene das die linke untere ecke eines panels auf einer form zum Punkt P(0/0) wird und ich von dort aus nach oben bzw rechts zeichnen kann.

lg

L
50 Beiträge seit 2005
vor 17 Jahren

hallo,

Eine Picturebox hat 2 Eigenschaften mit denen man das Koordinatensystem in der Box anders ausrichten kann.

Ich weiß aber leider nichtmehr wie die heißen...

Also könntest du dir n eigenes Steuerelement machen, dass die Eigenschaften von nem Panel und die 2 Eigenschaften von der Picturebox hat.

mfg
luke

H
59 Beiträge seit 2005
vor 17 Jahren

du erreichst das mit Nullpunktverschiebung und Skalierung, das Graphics Objekt bekommst du zB. im Paint Event.

Graphics.TranslateTransform(Graphics.ClipBounds.Width, Graphics.ClipBounds.Height);
Graphics.ScaleTransform(1, -1);

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 17 Jahren

Hab jetzt folgenden Code geschrieben und auf der Form wird nichts angezeigt:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Koordinatensystem_Verschiebung
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.TranslateTransform(this.ClientRectangle.Width, this.ClientRectangle.Height);
            e.Graphics.ScaleTransform(1, -1);
            e.Graphics.PageUnit = GraphicsUnit.Millimeter;
            e.Graphics.DrawLine(Pens.Black, 10, 10, 100, 100);
        }
    }
}
N
177 Beiträge seit 2006
vor 17 Jahren

Siehe "Sprites Spiegeln". Der Thread ist nicht mal 1 Tag alt.

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 17 Jahren

Aber das ist ja mit DirectX und nicht GDI+ oder geht das genauso?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Blue_Dragon,

es geht mit


e.Graphics.TranslateTransform (0, this.ClientRectangle.Height);
e.Graphics.ScaleTransform (1, -1);
e.Graphics.DrawLine (Pens.Black, 10, 10, 100, 100);


e.Graphics.PageUnit = GraphicsUnit.Millimeter;

ist dagegen in diesem Zusammenhang ungeeignet.

herbivore

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 17 Jahren

Kann mir jemand die ScaleTransform(1 , -1) Methode erklären? Aus der VS Hilfe werd ich nicht schlau.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Blue_Dragon,

in so einem Fall probiere ich es einfach aus. 🙂

Die Koordinaten, die du übergibst werden mit der "Transform-Matrix" (also den Werten, die du an TranslateTransform übergibst) multipliziert.

herbivore

H
59 Beiträge seit 2005
vor 17 Jahren

ScaleTransform vergrössert bzw. verkleinert deine Zeichenausgaben, negative Werte spiegeln deine Grafiken auf der entsprechenden Achse. In der deutschen MSDN findest du eine Webcastserie die sich mit GDI+ auseinandersetzt.