Hallo,
ich versuche mich grade in den Draw Funktionen. Leider finde ich dazu nur wenige Beispiele und irgendwie sieht das auch alles sehr verpixelt aus.
Gibt es irgendwo Tutorials dazu?
In Flash/Flex ist das alles so einfach :(
Grüße
Druckbare Version
Hallo,
ich versuche mich grade in den Draw Funktionen. Leider finde ich dazu nur wenige Beispiele und irgendwie sieht das auch alles sehr verpixelt aus.
Gibt es irgendwo Tutorials dazu?
In Flash/Flex ist das alles so einfach :(
Grüße
Welche Draw Funktionen meinst du denn? Falls du mit Graphics z.b aus .net meinst dann kannst du eigentlich auch die Tutorials der Desktop Version probieren, allerdings sind nur die wichtigsen Methoden vorhanden (trotzdem kannst du damit so ziemlich alles tun).
Solltest du jedoch kompliziertere Effekte wie Alphablending etc wollen, so wird das etwas schwieriger, da .net von Haus aus dafür keine Unterstützung bietet. In diesem Fall solltest du dir mal Imaging ansehen und nach .net porten.
Beschreibe doch mal was du machen willst, und ob du in c++ native oder c# programierst, ich helfe dir dann gerne weiter...
Hallo Phippu,
ja ich meine die aus .NET mit C#.
Ich wollte erstmal eine Uhr basteln die aus drei Kreisen besteht. der äusserste ist für die Stunden, mittlerer für Minuten und der innere Kreis soll für die Sekunden stehen.
http://www.cortexdesign.de/experiment/mobile/uhr.jpg
In Actionscript 3.0 würde ich das mit MoveTo und LineTo realisieren,
in .NET gibts aber nur DrawLine ( startX, startY, x, y ) was die ganze sache etwas kompliziert macht.
In Flash lösche ich mit gfx.clear(); die Zeichenfläche, in C# soll das mit gfx.Dispose() funktionieren?
Das habe ich bis jetzt...
die Stunden zähle ich nur zum testen mit ++ hoch.
Code:
private Pen houerPen = new Pen(Color.Red, 2);
protected int _houres = 24;
protected int _minutes = 30;
protected int _seconds = 1;
private const double PI2 = Math.PI * 2;
private const double RAD = 100;
private const double mhX = 200;
private const double mhY = 200;
private Graphics gfx;
private void render(){
gfx = this.CreateGraphics();
//houres
_houres++;
if (_houres > 24) _houres = 1;
double hPI2 = PI2;
int h = _houres * 100 / 24;//houres in percent 0-100
double startBM = ((hPI2 += ((h * 360 / 100) / h)) * Math.PI / 180);
double startX = (Math.Cos(startBM) * RAD) + mhX;
double startY = (Math.Sin(startBM) * RAD) + mhY;
while (--h > 0)
{
double bm = ((hPI2 += ((h * 360 / 100) / h)) * Math.PI / 180);
double px = (Math.Cos(bm) * RAD) + mhX;
double py = (Math.Sin(bm) * RAD) + mhY;
gfx.DrawLine(houerPen, (int)startX, (int)startY, (int)px, (int)py);
startX = px;
startY = py;
}
gfx.Dispose();
}
Vergiss nicht dass du auch Elipsen und Polygone zeichnen kannst. Vielleicht nicht ganz so effizient, aber du könntest doch 3 bitmaps als buffer erstellen. In jedes bmp kannst du dann dann den entsprechenden Kreis als Elipse zechnen und darüber einen zweiten schwarzen Kreis legen. Am schluss brauchst du nur noch die 3 buffer zu zeichnen et voila.
Falls das ganze jedoch etwas schneller gezeichnet werden soll und auch kantenglättung beinhalten soll (so wie im Bild), dann solltest du entweder OpenGl/DirectDraw oder aber eine geschickte Lösung mit vorgerenderten Bildern verwenden. Falls du willst kann ich dir ja mal zeigen wie das mit Tigre machbar wäre...
Hi,
das wäre nett von dir wenn du ein Beispiel in Tigre machen kannst.
Die Binaries habe ich jetzt im Projekt und versuch mich mal ein wenig damit.
Danke!
Kannst du mir noch eine gute Tweening Klasse empfehlen?
Ich suche so etwas wie TweenMax in AS 3 nur eben für C#