Discussion:
Linien und Rechtecke zeichnen !
(zu alt für eine Antwort)
Karl Twele
2008-11-06 12:08:35 UTC
Permalink
Hallo,

ich bin Umsteiger von VFP auf C#.NET und hab folgendes Problem. In VFP
konnte ich eine Line ziehen, dafür gab es ein Object LINE und ich konnte
Rechtecke zeichnen, dafür gab es ein Object SHAPE. Ich brauch das für
eine einfache Graphik im Formular, wie kann ich das gleiche mit C#.NET
erledigen.

Gruß KT
Frank Dzaebel
2008-11-06 12:28:36 UTC
Permalink
Hallo Karl,

ah, ist doch ein perfektes Posting.

> ich bin Umsteiger von VFP auf C#.NET und hab folgendes Problem. In VFP
> konnte ich eine Line ziehen, dafür gab es ein Object LINE und ich konnte
> Rechtecke zeichnen, dafür gab es ein Object SHAPE. Ich brauch das für
> eine einfache Graphik im Formular, wie kann ich das gleiche mit C#.NET
> erledigen.

nutze zum Beispiel die Methoden:

[Graphics.DrawLine-Methode (System.Drawing)]
http://msdn.microsoft.com/de-de/library/system.drawing.graphics.drawline.aspx

[Graphics.DrawRectangle-Methode (Pen, Rectangle) (System.Drawing)]
http://msdn.microsoft.com/de-de/library/sx8yykw8.aspx

[Galileo Computing :: Visual C# 2008 – 17.2 Die Klasse »Graphics«]
http://ws5.homelinux.org/ebooks/programming/C-sharp/Visual%20C-sharp%202008/online_version/visual_csharp_17_002.htm


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Frank Dzaebel
2008-11-06 12:39:48 UTC
Permalink
> nutze zum Beispiel die Methoden:
> [Graphics.DrawLine-Methode (System.Drawing)]
> [Graphics.DrawRectangle-Methode (Pen, Rectangle) (System.Drawing)]

Das kann man sich natürlich auch in Controls kapseln:

[CodeProject: Shape Control for .NET]
http://www.codeproject.com/KB/miscctrl/ShapeControldotNET.aspx


Falls das ganze mehr in Richtung
Zeichnen von Kurven etc. geht, ist wohl
eher soetwas geeigneter:

[Microsoft Chart Control]
http://dzaebel.net/MsChart.htm

[Main Page - ZedGraphWiki]
http://zedgraph.org/wiki/index.php?title=Main_Page


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Karl Twele
2008-11-06 13:47:21 UTC
Permalink
Hallo Frank,

also wenn ich das richtig verstehe muss ich das in die Form1.cs
schreiben, oder ?

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

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void DrawLinePoint(PaintEventArgs e)
{

// Create pen.
Pen blackPen = new Pen(Color.Black, 3);

// Create points that define line.
Point point1 = new Point(0, 0);
Point point2 = new Point(200, 200);

// Draw line to screen.
e.Graphics.DrawLine(blackPen, point1, point2);
}

private void Form1_Load(object sender, EventArgs e)
{

}
}
}

Das müsste doch jetzt einen dicken schwrzen Strich geben, tuts aber
nicht. Was mach ich falsch ?

Gruß KT
Frank Dzaebel
2008-11-06 14:00:21 UTC
Permalink
Hallo Karl,

> also wenn ich das richtig verstehe muss ich
> das in die Form1.cs schreiben, oder ?

ja.




> Das müsste doch jetzt einen dicken schwrzen
> Strich geben,

ja, da fehlt nur noch etwas.




> tuts aber nicht. Was mach ich falsch ?

- Markiere die Form.
- Geh in das Eigenschaften-Fenster.
Klicke dort auf den "gelben Blitz"
- scrolle zum Paint-Ereignis und
doppelklicke in den dortigen leeren Bereich.
Dann geht Visual Studio in den Quellcode
des Handlers: Form1_Paint(...)

- Dann folgendes etwa so dort eingeben:

Pen blackPen = new Pen(Color.Black, 3);

public void DrawLinePoint(PaintEventArgs e)
{
// Create points that define line.
Point point1 = new Point(0, 0);
Point point2 = new Point(200, 200);

// Draw line to screen.
e.Graphics.DrawLine(blackPen, point1, point2);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
DrawLinePoint(e);
}


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Karl Twele
2008-11-06 14:37:25 UTC
Permalink
Hallo Frank,

besten Dank vorerst, so geht's. Allerdings ist das ein fetter Strich im
Form, den man wohl nicht ändern kann und nur wieder wegbekommt, wenn man
einen zweiten zieht und zwar mit der Hintergrundfarbe des Forms.

In VFP waren das Objekte, die man aus der Toolbox in das Form zog und
dann die Eigenschaften programmgesteuert verändern konnte. So konnte ich
zum Beispiel ein einfaches Balkendiagramm zeichnen, deren Balken dann
unterschiedlich lang waren, je nach eingestellten Werten.

Vieleicht gehts mit Microsoft Chart Control, ich kämpf mich mal da durch.


Wie schön und einfach war doch das Leben vor .NET mit VFP !!!

Gruß KT
Frank Dzaebel
2008-11-06 15:01:01 UTC
Permalink
Hallo Karl,

> besten Dank vorerst, so geht's. Allerdings ist
> das ein fetter Strich im Form, den man wohl
> nicht ändern kann

:-)

nein, mach aus der 3 eine 1 in:

new Pen(Color.Black, 3);

dann klappts auch mit dem dünnen Strich.
Nicht so pessimistisch, aller Anfang ist schwer.




> In VFP waren das Objekte, die man aus der Toolbox
> in das Form zog und dann die Eigenschaften
> programmgesteuert verändern konnte.

In C# kannst Du wirklich maximal
flexibel arbeiten.
Will man später sehr feature-reiche
Grafiken erzeuigen ist es mit Controls
immer so eine Sache, da zeichnet man
lieber über Quellcode.

Wenn Du unbedingt Controls suchst,
hatte ich Dir ja zum einen:

[CodeProject: Shape Control for .NET]
http://www.codeproject.com/KB/miscctrl/ShapeControldotNET.aspx

genannt, wo man solche Dinge dann über
Control machen kann.

Oder zum Beispiel auch im "Visual
Basic Power Pack", dessen Controls
auch in C# nutzbar sind:

[Microsoft Visual Basic Power Packs 3.0]
http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx

Zwar nur ganz rudimentär, aber ja vielleicht für
den Anfang mal ein Beispiel, wie einfach
man mit beliebigen Komponenten in .NET
arbeiten kann.


Hier auch mal ein kleines Beispiel, dass man
auch mit anderen Controls zeichnen könnte ...

[Ein Grid selber zeichnen]
http://dzaebel.net/DgvPainting.htm


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Karl Twele
2008-11-07 07:35:09 UTC
Permalink
Hallo Frank,


> dann klappts auch mit dem dünnen Strich.
> Nicht so pessimistisch, aller Anfang ist schwer.

das ist das Problem, es fehlt bisweilen das Erfolgerlebnis und um dort
hinzukommen stößt man immer wieder auf unverständliche Hürden. Ich habe
jetzt versucht die MSChats zu installieren, das ging nicht weil mir das
Update vom .Net Framework 3.5 SP1 fehlte. Dann hab ich das erst
installieren wollen, das geht aber nicht, weil eine Installation von
einem "Document Viewer" nicht klappt und ständig nach einer CD im
Laufwerk "1" sucht. Die Installation vom Framework läuft paralell und
schmeißt unendlich viele, gleiche Fehler. Jemand der sich mal mit
VisualStudio.NET beschäftigen möchte es aber nicht muß, wird spätestens
jetzt den ganzen Kram in die Ecke schmeissen und sich am Kopf tippen.
Ich muß da aber durch, wenn wir nicht für mehrere € 100.000 SAP Software
kaufen wollen um dann unsere Administration im Unternehmen an die
Software anpassen zu müssen. Bisher haben wir das aus gutem Grund
umgekehrt gemacht und dafür VFP benutzt, eine einfache, aber ausreichend
mächtige Entwicklungsumgebung, die durch die quasi Monopolstellung und
die vorherrschende Politik von MS, zu Unrecht vom Markt genommen wurde.

> In C# kannst Du wirklich maximal
> flexibel arbeiten.
> Will man später sehr feature-reiche
> Grafiken erzeuigen ist es mit Controls
> immer so eine Sache, da zeichnet man
> lieber über Quellcode.

Mit C# ist man mit Sicherheit in der Lage den PC vollständig zu
beherrschen und die tollsten Dinge zu tun, aber bis man die ganzen
Hürden übersprungen hat ist man alt und grau geworden. Der Vorteil der
vielfältigen Möglichkeiten von VS ist auch gleichzeitig der Nachteil,
das sieht man an diesem kleinen Problem.

Trotzdem besten Dank an alle, nun werde ich mich mal durch die Tips
durcharbeiten, mir das beste heraussuchen und ganz viel lernen.

Gruß KT
Karl Twele
2008-11-07 09:32:41 UTC
Permalink
Hallo,

Hurra geht doch ganz einfach, hab einfach das Control Picture Box
genommen und kann jetzt ein einfaches Diagramm darstellen und auch
programmgesteuert ändern.

Gruß KT
Frank Dzaebel
2008-11-07 09:59:57 UTC
Permalink
Hallo Karl,

> Hurra geht doch ganz einfach hab
> einfach das Control Picture Box genommen

;-) Glückwunsch.

.. ja, man kann auch
bestehende Controls (oder eigene Benutzersteuerelemente)
benutzen und deren Verhalten anpassen.
Bis zum nächsten Mal!


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
Kerem Gümrükcü
2008-11-06 12:45:34 UTC
Permalink
Hallo Karl,

dein Freund ist die Graphics-Klasse und deren Methoden und Eigenschaften:

//in den Paint-Handler eines Form1 Forms

private void Form1_Paint(object sender, PaintEventArgs e)
{

try
{
Graphics g = e.Graphics;
g.FillRectangle(Brushes.Green,new Rectangle(0,0,102,102));
g.DrawRectangle(Pens.Red,new Rectangle(0,0,100,100));
g.DrawLine(Pens.Red, new Point(0, 0), new Point(100, 100));
g.DrawLine(Pens.Red, new Point(100, 0), new Point(0, 100));


}
catch (Exception)
{

}

}

Grüße

Kerem
Harald M. Genauck
2008-11-06 15:04:21 UTC
Permalink
Hallo Karl,

> ich bin Umsteiger von VFP auf C#.NET und hab folgendes Problem. In
> VFP konnte ich eine Line ziehen, dafür gab es ein Object LINE und ich
> konnte Rechtecke zeichnen, dafür gab es ein Object SHAPE. Ich brauch
> das für eine einfache Graphik im Formular, wie kann ich das gleiche
> mit C#.NET erledigen.

Solche Controls gibt es über die Microsoft.Visual Basic PowerPacks
http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx

In VS 2008 sind diese m.W. schon enthalten und können auch in C# in die
Toolbox geladen werden (Microsoft.VisualBasic.PowerPacks.Vs.dll).


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)
Herfried K. Wagner [MVP]
2008-11-06 22:32:20 UTC
Permalink
"Karl Twele" <***@karltw.de> schrieb:
> ich bin Umsteiger von VFP auf C#.NET und hab folgendes Problem. In VFP
> konnte ich eine Line ziehen, dafür gab es ein Object LINE und ich konnte
> Rechtecke zeichnen, dafür gab es ein Object SHAPE. Ich brauch das für eine
> einfache Graphik im Formular, wie kann ich das gleiche mit C#.NET
> erledigen.

Verwendest Du Windows Forms? Eventuell wäre Windows Presentation Foundation
(WPF) eine zukunftsträchtige Alternative. In Expression Blend sollte auch
der Entwurf graphisch aufwendiger Formulare recht einfach möglich sein.

--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Loading...