| |
Fortgeschrittene ProgrammierungBildschirmausgabe auf Bereich begrenzen | | | Autor: HarryLobster | Datum: 14.09.18 11:15 |
| Ich habe mal wieder eine besonderes Anliegen, ich hoffe, ich kann es rüber bringen...
wenn ich auf einem Objekt (Form, Picturebox, etc.) mittels API, z.B.
Rectangle Form.hdc, -10, 10, 20, 20
zeichne, dann wird das Rechteck ja wegen der negativen Koordinaten abgeschnitten.
Das Abschneiden orientiert sich aber immer an den Koordinaten 0, 0 des jeweiligen Objekts.
Ist es irgendwie möglich, dass ich diesen Effekt auch mitten auf dem Formular erzielen kann, also ein Rechteck relativ zu einem imaginären Rahmen abgeschnitten darzustellen ?
Ich möchte prinzipiell damit erreichen, dass ich für Grafiken, die durch andere verdeckt werden, nicht immer alle Grafiken neu zeichnen muss, um den "Übereinander-Effekt" zu erzielen.
Man stelle sich vielleicht eine fixe Leiste bei einem Grid vor, unter der mit der Bildlaufleiste Grafiken unten durch geschoben werden.
Ich habe bisher nur die beiden Ansätze gefunden, dass man so eine Leiste in einer eigenen PictureBox abbildet oder eben immer die Leiste nach einer Bewegung neu zeichnet. Beides befriedigt mich aber nicht wirklich. Das eigentliche Problem ist noch etwas komplexer und es geht auch um Performance.
Ich wäre wirklich dankbar für einen Tipp. | |
Re: Bildschirmausgabe auf Bereich begrenzen | | | Autor: Kuno60 | Datum: 14.09.18 20:28 |
| Hallo,
ja das ist möglich durch Clipping. Damit legst du die Region fest, in die gezeichnet wird.
Hiermit werden die linken 10 Pixel des Rechtecks nicht gezeichnet:
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal x1 As Long, ByVal y1 _
As Long, ByVal x2 As Long, ByVal y2 As Long) As Long
Private Declare Function SelectClipRgn Lib "gdi32" (ByVal hDC As Long, ByVal _
hRgn As Long) As Long
Private Declare Function Rectangle Lib "gdi32" (ByVal hDC As Long, ByVal x1 As _
Long, ByVal y1 As Long, ByVal x2 As Long, ByVal y2 As Long) As Long
Dim dc As Long, rn As Long
dc = Picture1.HDC
rn = CreateRectRgn(60, 50, 150, 150)
Call SelectClipRgn(dc, rn)
Call Rectangle(dc, 50, 50, 150, 150) | |
Re: Bildschirmausgabe auf Bereich begrenzen | | | Autor: HarryLobster | Datum: 14.09.18 21:07 |
| Ich bin beeindruckt und sehr dankbar ! Ich habe da so lange nach gesucht... | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|