Wie mache ich eine Lupe ?

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Wie mache ich eine Lupe ?

Beitrag von gambasso » Di 5. Feb 2019, 16:32

moin,

habe Probleme mit dem Aufbau einer Lupe.
Beschreibung des Problems, Kreis ist in 4 Viertel aufgeteilt:
das obere linke Viertel wird unten rechts dargestellt
das untere linke Viertel wird oben rechts dargestellt
das obere rechte Viertel wird unten links dargestellt
das obere linke Viertel wird unten rechts dargestellt

Warum?

Ich beabsichtige folgendes, von einem Image auf einer Scrollarea eine Ausschnitt vergrößert in einem Kreis (Lupe) darzustellen.
Dieses soll aber nicht auf dem Image der Scrollarea erfolgen, sondern darauf befindet sich ein Panel mit einer PictureBox zur
Darstellung. Da lann ich diese bei Bedarf ein- und ausschalten.

gambas code
Public Sub ScrollArea2_MouseMove()
   Dim mmx, mmy, pax, pay, pmx, pmy As Integer
   Dim timg1, timg2, timg3, himgz As Image
   Dim lugroe As Integer

   lugroe = 256 '                  Lupen, Keisdurchmesser
   mmx = Mouse.X '                 Mouse X
   mmy = Mouse.Y '                 Mouse Y
   pax = mmx - (lugroe / 2) '      Panel X
   pay = mmy - (lugroe / 2) '      Panel Y
   pmx = mmx - (lugroe / 4) '      Umrechnung Ausschnitt X
   pmy = mmy - (lugroe / 4) '      Umrechnung Ausschnitt Y
   
   If ToggleButton11_5.Value = True Then '         Lupe 0 / 1

      timg1 = New Image(lugroe, lugroe) ' , Color.DarkGray) ''     luzoom <<< ???  
      timg2 = New Image(lugroe / 2, lugroe / 2) ', Color.DarkGray)
      timg3 = New Image(lugroe, lugroe) 
      himgz = New Image(lugroe, lugroe) 

      timg1 = F0_sca2_Img.Copy(pax, pay, lugroe, lugroe) '          Ausschnitt aus Bild   original Größe
      timg3 = F0_sca2_Img.Copy(pax, pay, lugroe, lugroe) '          Ausschnitt aus Bild   original Größe

      himgz = F0_sca2_Img.Copy(pmx, pmy, lugroe / 2, lugroe / 2) '  kleinerer Ausschnitt aus Bild  Teilbild
      timg2 = himgz.Stretch(lugroe, lugroe) '     

     Paint.Begin(timg3)
        Paint.LineWidth = 2
        Paint.Brush = Paint.Image(timg2, lugroe / 2, lugroe / 2)
        Paint.Arc(lugroe / 2, lugroe / 2, lugroe / 2) 
        Paint.Fill(True)
        Paint.Brush = Paint.Color(Color.Blue)
        Paint.Stroke '                 '  
     Paint.End
End
Wer verdreht die Anzeige? Und wie wieder zurück?
Gruss

Honsek
Foriker
Beiträge: 389
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: Wie mache ich eine Lupe ?

Beitrag von Honsek » Di 5. Feb 2019, 16:40

Hallo Gambasso,

eine Lupe habe ich bisher nur in einem Projekt verwendet: https://www.gambas-buch.de/doku.php?id= ... kt_geomap2

Dort könntest Du das Passende finden.

Mit freundlichem Gruß

Hans
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Wie mache ich eine Lupe ?

Beitrag von gambasso » Di 5. Feb 2019, 16:57

Hallo Hans,

bei mir erscheint in Deinem Beispiel keine Lupe. In anderen Beispielen ja, aber es kommt keine Karte, also kein Inhalt in der Lupe.

Da finde ich auch nichts Passendes. Mit 'Map' habe ich mich noch nicht beschäftigt.

Mit freundlichem Gruß

Klaus
Gruss

Honsek
Foriker
Beiträge: 389
Registriert: Do 4. Okt 2007, 17:01
Kontaktdaten:

Re: Wie mache ich eine Lupe ?

Beitrag von Honsek » Di 5. Feb 2019, 21:08

Hallo Klaus,

ich habe das Projekt noch einmal getestet und die neue Version findest Du auf der o.a. Webseite oder hier im Anhang.

Mit flotten Grüßen

Hans
geomaplensb.1.1.1.tar.gz
Überarbeitetes Projekt
(12.36 KiB) 49-mal heruntergeladen
Honsek (https://www.gambas-buch.de)
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Wie mache ich eine Lupe ?

Beitrag von gambasso » Mi 6. Feb 2019, 11:41

moin Hans,

den Fehler mit der Darstellung in dem Kreis (Lupe) habe ich beseitigt.
Diese Zeile > Paint.Brush = Paint.Image(timg2, lugroe / 2, lugroe / 2) habe ich abgeändert
nach > Paint.Brush = Paint.Image(timg2)
Danach war das Bild in der Lupe.

Jetzt muß ich die Plazierung der Lupe, bzw. des Hintergrundes der Lupe, überarbeiten. Die Position des Bildes auf der ScrollArea
muß ich noch mit einbeziehen.

Mit 'Map' habe ich nocht nichts mit gemacht. Kann ich da ein Bild drauf wiedergeben?

Mit freundlichem Gruß

Klaus
Gruss

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast