User Passwort
 Passwort speichern Passwort vergessen?
 
 
 
 Alle Foren
 PDA-Dev :: Windows Mobile
 Windows Mobile - Allgemeines
 Neuling ...
Autor Vorheriges Thema Thema Nächstes Thema  

MaSc

PDA-Interessierter


5 Beiträge

Erstellt am: 13.11.2008 :  09:30:12 Uhr  Profil anzeigen  Autor eine Email senden  Besuche MaSc's Homepage  Antwort mit Zitat
Hallo Leute,
ich habe fuer meinen MIO A701 eine kleine Anwendung (in C#) geschrieben mit der ich meine Trainingseinheiten (Bogenschiessen) aufzeichnen kann. Ueber ein Panel zeichne ich die Auflage und mit dem OnMouseDown kann der Schuetze den Treffer anzeigen lassen. Das ganze wird dann in einer XML Datei gespeichert, damit ich es dann auf dem Desktop importieren kann.
Frage:
Die Definition einer Auflage ist auch eine XML Datei (Anzahl Ringe und Farben). Es gibt Schuetzen die brauchen nicht mehr 10 Ringe sondern koennen alles in den letzten 5 eintragen. Somit habe ich eine Auflage gemacht die nur die letzten 5 Ringe anzeigt und ein StartCount eingefuegt, damit ich die Punkte richtig errechnen kann. Damit kann ich aber nicht mehr auflage aendern. denn die Koordinaten sind falsch. Gibt es eine einfache Loesung fuer eine Zoom damit ich die Auflage immer original definieren kann.
Gruss
Marco
  Web Server's Default Page
Web Server's Default Page

This page is generated by Plesk, the leading hosting automation software. You see this page because there is no Web site at this address.

You can do the following:

  • Create domains and set up Web hosting using Plesk.
What is Plesk

Plesk is a hosting control panel with simple and secure web server and website management tools. It was specially designed to help IT specialists manage web, DNS, mail and other services through a comprehensive and user-friendly GUI. Learn more about Plesk.

 

Useless user

PDA-Spezialist


465 Beiträge

Erstellt  am: 13.11.2008 :  13:22:07 Uhr  Profil anzeigen  Besuche Useless user's Homepage  Antwort mit Zitat
Könntest du das etwas verständlicher ausdrücken?
Zum Anfang der Seite

robert.wachtel

robert.wachtel

PDA-Spezialist


301 Beiträge

Erstellt  am: 13.11.2008 :  15:15:24 Uhr  Profil anzeigen  Autor eine Email senden  Besuche robert.wachtel's Homepage  Antwort mit Zitat
...und ich dachte schon, ich wäre der einzige, der hier nur Bahnhof versteht...

Viele Grüße aus Köln
Robert Wachtel
http://blog.robertsoft.de
Zum Anfang der Seite

MaSc

PDA-Interessierter


5 Beiträge

Erstellt  am: 15.11.2008 :  21:32:31 Uhr  Profil anzeigen  Autor eine Email senden  Besuche MaSc's Homepage  Antwort mit Zitat
Mit Worten ist das ein wenig schwierig... ich zeichne die Auflage auf der ich schiessen muss. sie hat 10 Ringe (1 bis 10) und das klappt alles bestens. Jetzt haben einige Schuetzen gefragt ob sie nur die Ringe (6 bis 10) sehen koennten, da sie nur diese dokumentieren. Um das Problem zu loesen habe ich 2 Auflagen definiert. Aber dafuer kann ich jetzt nicht mehr zwischen den Auflagen wechseln. Mit einer Zoom Funktion, koennte ich den guten Schuetzen nur 5 Ringe zeigen aber dafuer die Positionen richtig abspeichern.
Ich hoffe, jetzt habe ich es besser formuliert.
Gruss
Marco
Zum Anfang der Seite

Useless user

PDA-Spezialist


465 Beiträge

Erstellt  am: 16.11.2008 :  12:48:10 Uhr  Profil anzeigen  Besuche Useless user's Homepage  Antwort mit Zitat
Naja, eigentlich solltest du versuchen es in der "Sprache" eines Informatikers zu erklären und weniger mit Worten eines Bogenschützens.
So halb hab ichs verstanden. Was ich nicht verstehe ist:
"Aber dafuer kann ich jetzt nicht mehr zwischen den Auflagen wechseln"
Warum nicht?
Wahrscheinlich musst du die Daten (MousePosition?) in einer allgemeinen Form definieren, die es ermöglicht den korrekten Punkt anzuzeigen unabhängig davon welchen Teil des Bildes du anzeigst. Z.B. könntest du als logisches Koordinationsystem eine Fläche 1000 x 1000 verwenden. Beim MouseDown errechnest du dann anhand des Mouse-Punktes die logischen Koordinaten.
irgendwie so: logische Position = Pixel auf dem Control / Größe des Controls in Pixel * 1000
und zum Anzeigen der Daten das ganze Rückwärtsrechnen um den Pixel zu ermitteln.
Weiterer Vorteil: dein Programm funktioniert dann auch auf PDAs mit anderer Bildschirmauflösung korrekt (640x480 statt 320x240).
Zum Anfang der Seite

MaSc

PDA-Interessierter


5 Beiträge

Erstellt  am: 16.11.2008 :  20:46:14 Uhr  Profil anzeigen  Autor eine Email senden  Besuche MaSc's Homepage  Antwort mit Zitat
Das mache ich schon, ich speichere die Koordinaten immer auf einer 500 x 500 Pixel Scheibe und das funktioniert auch gut. So kann ich die groesse der Auflage aendern und die Treffer verschieben sich. Ich habe eine ConvertToStd und eine ConvertToTarget Funktion mit der ich gut umrechnen kann.
Hier sehe ich aber das Problem anders: Ich will doch nicht die groesse der Auflage aendern, sondern es ist nur der Ausschnitt einer groesseren Flaeche.... Ich habe eine Version auf http://www.cioppino.net/downloads/FitaMobile.cab hinterleg. Vielleicht wird es dann klarer... Auflage Standard (original) und Standard2 (kleiner Ausschnitt aus Standard).
Nun ist mir noch ein Problem aufgetaucht: Ich arbeite mit CF 3.5 und SharpDevelop und habe einen Mio A701 mit WindowsMobile 5. Hier arbeite das Program gut. Aber auf andere Handys mit Windows Mobile 6 mit gleichem CF bekomme ich diesen Fehler:
TypeLoadException
in System.Drawing.Bitmap..ctor()
in CNFitaMobile.MainForm..ctor()
in CNFitaMobile.MainForm.Main()
Gibt es hier unterschiede zwischen WM5 und WM6 bei gleichem CF?
Gruss
Marco
Zum Anfang der Seite

MaSc

PDA-Interessierter


5 Beiträge

Erstellt  am: 17.11.2008 :  04:50:45 Uhr  Profil anzeigen  Autor eine Email senden  Besuche MaSc's Homepage  Antwort mit Zitat
Habe nun das Project fuer NETCF 2.0 kompiliert und der Fehler TypeLoadException ist nicht mehr aufgetreten. Den Grund verstehe ich immernoch nicht.
Zum Anfang der Seite

Useless user

PDA-Spezialist


465 Beiträge

Erstellt  am: 17.11.2008 :  13:32:58 Uhr  Profil anzeigen  Besuche Useless user's Homepage  Antwort mit Zitat
Wie sehen denn deine Convert-Funktion aus? Bzw. wie zeichnest du deine Auflage? Als Bitmap im Hintergrund oder direkt auf das Control?
Du müsstest doch mit deinem 500x500 Raster arbeiten können. Bei der Komplettansicht zeichnest du das ganze Ding. Bei der Zoomansicht nur den inneren Ausschnitt, z.B. 200x200.
Dann nimmst du z.B. alles was auf der Achse >150 und <350 ist und rechnest dass auf die Breite deines Panels um:
X-Koordinate auf dem Control = Breite des Controls in Pixel * ( (x - 150) / 200)
so ähnlich dann auch für y.
Zum Anfang der Seite

MaSc

PDA-Interessierter


5 Beiträge

Erstellt  am: 17.11.2008 :  14:43:46 Uhr  Profil anzeigen  Autor eine Email senden  Besuche MaSc's Homepage  Antwort mit Zitat
Als Bitmap aber nicht im Hintergrund, ich erstelle ein Bitmap zeichne alles und dann benutze ich e.Graphics.DrawImage.
private Score ConvertStdToClient(Score score) {
int x = (int) (score.X * scale);
int y = (int) (score.Y * scale);
return CreateVirtualScore(x, y, score.Value);
}
private Score ConvertClientToStd(Score score) {
int x = (int) (score.X / scale);
int y = (int) (score.Y / scale);
return CreateVirtualScore(x, y, score.Value);
}
Und scale errechne ich so:
private void CalcScale() {
maxSize = ClientRectangle.Width < ClientRectangle.Height
? ClientRectangle.Width
: ClientRectangle.Height;
ringWidth = maxSize / (target.RingCount * 2);
maxSize = ringWidth * target.RingCount * 2;
halfSize = maxSize / 2;
scale = (float) maxSize / 500;
}
>Du müsstest doch mit deinem 500x500 Raster arbeiten können
Ja, aber wie macht man ein Zoom, das weiss ich nicht.
Gruss
Marco
Zum Anfang der Seite

Useless user

PDA-Spezialist


465 Beiträge

Erstellt  am: 18.11.2008 :  22:59:52 Uhr  Profil anzeigen  Besuche Useless user's Homepage  Antwort mit Zitat
Okay, der Quellcode hat mir leider nicht viel weitergeholfen.
Dass mit dem Zoom machst du über die Parameter der DrawImage-Funktion.
Es gibt eine Überladung mit den Parametern SourceRect und DestRect.
DestRect ist wie gewohnt die Fläche auf die du dein Bild zeichnest (das Panel),
SourceRect ist der Ausschnitt der auf die Fläche vom DestRect aufgezoomt werden soll.
Bei einem Bild 300x300 Pixel könntest du zoomen indem du als SourceRect das folgende verwendest:
x = 100
y = 100
Width = 100
Height = 100
Probier einfach mal ein paar Varianten für das SourceRect aus.
Besser wäre es natürlich nicht auf Bitmap-Ebene zu zoomen, sondern einfach in dein Bitmap nur den darzustellenden Bereich zu zeichnen (bessere Bildquali).
Zum Anfang der Seite
  Vorheriges Thema Thema Nächstes Thema  
Springe nach:
 
  Bookmark & Share  
 
 
 
  Tags  
 
Keine Tags gefunden
 
 

 



pda-dev.de

Quicklinks: Foren-Übersicht | Developer-News | Suche | Impressum

© just-works! Software

Zum Anfang der Seite

Snitz Forums 2000