Brauche Hilfe bei Layoutprogramm für Tastaturen...
-
Hey,
also ich baue mir gerade eine Applikation, mit der ich Touchscreen-Tastaturen erstellen kann. Also eine Bitmap-Vorlage muss ins Programm geladen werden, dann kann ich den Tasten der Tastatur Funktionen zuweisen und am Ende wird noch die XML-Definition geschrieben.
Mein Problem ist:
Wie kann ich diese Bearbeitung der Tastatur am besten umsetzen ??Es wäre super, wenn man z.B. alle Tasten in einem Array oder irgendwas hätte, um dann die Koordinaten zu vergleichen, auf welche Taste geklickt wurde.
Dann ist wiederum die Frage: Wie ??Wer hat mal ein Vorschlag dazu ??
Komme hier einfach nicht weiter...Ich sag schonmal Danke !
-
Oder ich formuliers mal etwas anders: Kann ich anhand der Bilddaten des Bitmaps das Bild einteilen ?? Bzw. wie ??
Beispielsweise um jede Taste einen Rahmen ziehen oder sowas ??
Ich blick da echt nicht durch...
-
Ein Touchscreen ist doch nichts anderes als eine Maus (jedenfalls für Windows). Also kannst du da die Mauskoordinaten auf deinem Dialog auswerten. Das ganze kann man dann mit den Positionen des Bitmaps verknüpfen und schon hast du deine Tastatur.
Allerdings könnte es Probleme geben die Eingaben an die Anwendung zu senden, da immer nur die aktive Anwendung die Eingaben bekommt und da deine Anwendung dann die Aktive ist wirds hackelig.
-
In meine Applikation wird ein Bitmap als Vorlage geladen, muss also von User ausgewählt werden.
Das Keyboard ist im Prinzip schon fertig, was das Layout anbelangt.Ich will dem User die Möglichkeit geben, die Tasten seines Keyboards (der Vorlage) neu festzulegen.
Er soll also auf eine Taste klicken und dieser Taste dann eine Funktion (Buchstabe, Zahl) zuweisen.
Der User gibt jeder Taste ihre Funktion und am Ende wird daraus die XML-Definition des Keyboards geschrieben.Wenn in das Bild geklickt wird, muss ich ja wissn, an welche Stelle bzw. auf welche Taste im Bild geklickt wurde.
Das ist das Problem dabei.
-
Ist das bild immer untscherschiedlich von der Tastengröße? wenn nicht hast du doch die Eckdaten von jedem einzelnen Feld. Damit sollte man die Position rausbekommen und speichern können für die Taste "X" oder "Y"
-
Nein, die Tasten bleiben eig. gleich groß.
Nur wie meinst du das mit den Eckdaten ? Woher bekomm ich die bzw. wie komm ich da ran ??
Ausmessen und fix damit arbeiten wäre möglich, erscheint mir aber irgendwie als Frickelei...
(Sorry ich seh noch nicht wirklich durch... :))
-
Naja du hast also eine Feste Grafik mit einem vorgegebenen Aufbau
z.B. 4 Reihen á 8 Tasten. Jede Taste hat auf der Grafik eine größe von 30x30px und zwischen den Tasten ist ein Freiraum von 5px. Zum Rand hin hast du auch 5px Platz. MIt den Daten kann man doch einfach ausrechnen, wo eine Taste anfängt und aufhört.
Also (Augabe in X / Y):
erste Taste beginnt bei 5x5px und endet bei 35x5px in der Breite. Dann 5px dazu für den Abstand und dann hast du die zweite Taste bei 40x5px und so weiter. Das selbe für die Höhe.
Das ganze z.B. so abfragen:
if((punkt.x >= 5) && (punkt.x <= 35)) { if((punkt.y >= 5) && (punkt.y <= 35)) { //Hier ist der Gültige Bereich für die Taste 1 Spalte 1 Zeile //Mach was } } if((punkt.x >= 40) && (punkt.x <= 30)) { if((punkt.y >= 5) && (punkt.y <= 35)) { //Hier ist der Gültige Bereich für die Taste 2 Spalte 2 Zeile 1 //Mach was } } . . . if((punkt.x >= 5) && (punkt.x <= 35)) { if((punkt.y >= 40) && (punkt.y <= 70)) { //Hier ist der Gültige Bereich für die Taste 1 Spalte 1 Zeile 2 //Mach was } }
Ist zwar ein wenig schreibarbeit aber so lässt sich das einfach realisieren.
-
Die Idee ist ja nicht schlecht, aber einfach ein CPoint-Array mit der Anzahl der Tasten machen und dann in einer Schleife durchgehen und mit PointInRect() abfragen ob ein Treffer erziehlt wurde. Ist auf jeden Fall übersichtlicher als 104 if-Abfragen zu schreiben.
wobei, es würde noch die möglichkeit geben, mir einer Farbmaske des Tastaturlayout zu arbeiten, also jede taste bekommt eine Farbe und über ein so farbig gemachtes Bitmap kann man die Zuordnung zur Tastenbelegung erhalten, macht aber nur Sinn wenn Speicher nicht unbedingt das Problem ist, also sicher nix für ein Portable Gerät, aber eben ein anderer Ansatz.
-
Guten Morgen,
sorry es ging nicht eher.Ich mein, es ist auf jeden Fall eine Idee, die Taste herauszufinden anhand der Breite usw., nur hab ich immer ein Problem mit solchen Festlegungen.
Auf der anderen Seite, wie soll man es sonst machen können !?@CTecS: Würde es dann vielleicht auch so machen, nur wenn ich schon soweit gehe, dann könnte ich auch gleich noch verlangen, dass der User eine XML-Definition mit angibt.
Ich überlege auch schon in die Richtung, da ich schon ein Programm habe, dass mit den Keyboards arbeitet und so auch schon eine definierte Struktur habe.Wollte es eig. ohne so eine Definition machen, aber wenn schon eine Keyboard ausgewählt werden muss, dann kommts auf die Definition auch nicht mehr wirklich an.
Denk ich zumindest...Ich danke euch auf jeden Fall erstmal sehr für eure Hilfe, ich muss da glaub nochmal in Ruhe darüber nachdenken, was jetzt wie Sinn macht...
Eine schöne Arbeitswoche !
-
Ich hab einmal etwas ähnliches gemacht.
Dabei bin ich folgendermaßen forgegangen:
Neben dem angezeigten Bild habe ich ein 2. erstellt dass die selbe Größe und aufteilung hat.
Der einzige Unterschied beim 2. Bild ist, dass die Bereiche der Tasten mit Farben des Ascci-Wertes der dazugehörenden Taste bemalt wurden.
Bereiche ohne Funktion werden dabei einfach Schwarz (0x000000) gemalt.Somit muss man sich nur den Farbwert an der Mausposition holen und hat den Ascci-Wert der gedrückten Taste.
Dass erspart einem viel Rechnerzeit, da man anstatt vieler Abfragen nur einmal einen einzigen Pixel holen muss.Eine schnellere Lösung habe ich bis jetzt noch nicht gefunden.
-
Ja wäre auch noch eine Idee gewesen, wobei ich keinen Wert auf Performance lege, die steht hier nicht im Vordergrund...
Aber ich lasse dem User einfach irgendeine XML-Definition des Keyboards laden und kann dann so die geklickte Taste ermitteln !
Aber trotzdem danke, werds mir mal vormerken !