vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 1902: Rahmen um Grafik zeichnen 
Autor: mrterraluna
 Tipp anzeigenDatum: 24.10.08 00:09

Hallo !

Hab mich mal an eine andere lösung gemacht hier ist der rahmenpen frei gestalötbar und die picturebox passt sich den userwünschen bzw dem image an ...
lg
oliver

Imports System.Net
Imports System.Drawing
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        MyRahmen(Me.PictureBox1)
    End Sub
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
      Handles Me.Load
        MyScale(Me.PictureBox1, My.Resources.testbild, 100)
    End Sub
    Private Sub MyScale(ByVal MyBox As PictureBox, ByVal MyPic As Image, _
      Optional ByVal WunschBreite As Integer = 100)
        Dim myFaktor As Double
 
        MyBox.Height = MyPic.Height
        MyBox.Width = MyPic.Width
 
        myFaktor = MyPic.Width / WunschBreite
 
        MyBox.SizeMode = PictureBoxSizeMode.StretchImage
        MyBox.Image = MyPic
 
        MyBox.Height /= myFaktor
        MyBox.Width /= myFaktor
    End Sub
    Public Sub MyRahmen(ByVal MyBox As PictureBox)
        Dim gr As Graphics = Graphics.FromHwnd(MyBox.Handle)
        Dim Breite As Integer = 8
        Dim MyPen As New Pen(Color.BlueViolet, Breite)
 
        MyPen.DashStyle = Drawing2D.DashStyle.DashDot
 
        gr.DrawRectangle(MyPen, CInt(Breite / 2), CInt(Breite / 2), _
                         MyBox.Width - Breite, MyBox.Height - Breite)
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Rahmen um Grafik zeichnen 
Autor: Caddy
Datum: 14.12.17 20:56

Hallo,

vielleicht kann mir einer helfen, da ich wohl wieder mal nicht blicke, wo mein Denkfehler liegt.

Ich habe das Beispiel für eine Listbox mit Images in den Items ausprobiert. Es klappt auch so weit gut, nur zeichnet er nur den oberen und linken Teil des Rahmens in dem Image. Ich finde den Fehler aber nicht warum nicht. Das einzige was ich wohl vermute, dass es was mit der Größe des Image zu tun, was ich an die Funktion übergebe. Alle Versuche es mit New Size anzupassen scheitern jedoch, oder haben keine Auswirkungen auf das Ergebnis.

Kann mir einer helfen?

Ich habe ein Image mit Width= x und Height = y.

Nun will ich dieses umranden ohne x und y zu kennen. Daher bring ich x und y auf mit bekannte Längen und male dann den Rahmen. Jedoch zeichnet er nur den oberen und linken Rahmen an das Bild.

Vielleicht kann das mal jemand erklären, wie ich das machen kann.

Gruß Caddy

Gruss Caddy

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Rahmen um Grafik zeichnen 
Autor: Franki
Datum: 15.12.17 03:45

Hallo Caddy
Zitat:


Ich habe ein Image mit Width= x und Height = y.


Soweit so gut

Zitat:


Nun will ich dieses umranden ohne x und y zu kennen. Daher
bring ich x und y auf mit bekannte Längen und male dann den
Rahmen. Jedoch zeichnet er nur den oberen und linken Rahmen
an das Bild.


Also du hast x und y, kennst die Werte aber nicht und möchtest dann auf den Werten (die du ja nicht hast) etwas berechnen.

Ich vermute mal, dass du deine Geometrie überarbeiten musst, dann wenn du Werte hast und dann etwas drum herum zeichnen möchtest (also Vergrößerung) du auch die gesamten Abmessungen berücksichtigen musst.

Falls du dich mit HTML5 usw. auskennen solltest, dann schau dir das Box Modell mal an, da ist das in der Literatur anschaulich erklärt wie das mit den Rahmen funktioniert. Vielleicht ist das auch für dein Problem übertragbar.

OK, nicht ganz weil du ja keine HTML Seite schreiben möchtest, aber weil du das Thema angesprochen hast und keine weiteren Informationen über deinen Code gibst könnte das ein Hinweis sein.

Gru0
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Rahmen um Grafik zeichnen 
Autor: Caddy
Datum: 15.12.17 15:06

Hallo Frank,

ok ich fang es anders an.

Ich habe in der Funktion, wie ich den Rahmen zeichne zu dem von mir vorgegebenen Bild, welches die Rahmengröße mit Koordinaten für x,y,w,h angeben kann.

Nur kann ich aus der Grafik, die ich an die Funktion übergebe, die Breite und Höhe des Image nicht direkt sehen. Also verändere ich die Größe meines übergebenen Bildes an mir bekannte Größen.

z.B. ist das Image 1 im Original 300*200 groß

Nun verändere ich es auf 30*30.

Das klappt auch soweit.

Wenn ich aber nun den Rahmen mit den Koordinaten 0,0,30,30 darum zeichnen will, dann zeichnet er nur die obere und linke Seite des Rahmens. Der untere und hintere Teil (rechts) ist nicht zu erkennen,da er diesen vermutlich unterhalb des Bildes zeichnet.

Wenn ich das Image in den Orignalgrößen belasse, dann zeichnet er den Rahmen als Quadrat auf das Bild, so dass mittendrin eine senkrechte Linie besteht, wo das Bild drüber hinwegragt.

Das will ich somit ändern, dass er den Rahmen unabhängig um das Bild zeichnet, nachdem ich die Breite und Höhe des Bildes angepasst habe. Nur wie oben beschrieben funktioniert das wohl nicht.

Abstrakt läuft es also so ab:

Original 0,0,300,200
gewünschte Größe anpassen auf 0,0,30,30
Rahmen um das angepasste Bild zeichnen mit Rectangle 0,0,30,30

Nun ändert er zwar dank New Size(30,30) das Originalbild auf die gewünschte Größe, aber für ihn bleibt es dennoch auf 300*200 wenn ich den Rahmen zeichne. Somit mal er nur die linke obere Ecke mit einem Rahmen, da für ihn x und y als Koordinaten ja nie verändert wurden, sondern nur width und height.

Ich hoffe ich habe das nun etwas genauer beschrieben.

Gruß

Caddy

Gruss Caddy

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Rahmen um Grafik zeichnen 
Autor: Franki
Datum: 17.12.17 02:40

Hallo Caddy
Zitat:


Ich habe in der Funktion, wie ich den Rahmen zeichne zu dem
von mir vorgegebenen Bild, welches die Rahmengröße mit
Koordinaten für x,y,w,h angeben kann.


Und diese Funktion, nennen wir sie FunctionA funktioniert einwandfrei?

Zitat:


z.B. ist das Image 1 im Original 300*200 groß
Nun verändere ich es auf 30*30.
Das klappt auch soweit.


Dann rufst du deine FunktionA halt auf mit den Parametern für die neue Bildgröße, also 30 x 30? Oder ist das Ziel immer noch das Originalbild?
A.jpg kannst du zwar verändern, aber du musst dann entweder z.B. A1.jpg als Datei aufrufen oder die geänderte Quelle, sei es Picturebox oder sonst was.

Zitat:


Das will ich somit ändern, dass er den Rahmen unabhängig um
das Bild zeichnet, nachdem ich die Breite und Höhe des Bildes
angepasst habe. Nur wie oben beschrieben funktioniert das
wohl nicht.


Siehe oben, rufe deine Funktion erst auf nachdem das Bild angepasst wurde.

Zitat:


Nun ändert er zwar dank New Size(30,30) das Originalbild auf
die gewünschte Größe, aber für ihn bleibt es dennoch auf
300*200 wenn ich den Rahmen zeichne. Somit mal er nur die
linke obere Ecke mit einem Rahmen, da für ihn x und y als
Koordinaten ja nie verändert wurden, sondern nur width und
height.


Du musst deine Funktion erneut aufrufen nachdem du das Bild geändert hast. also die entsprechenden Parameter übergeben für die neue Größe. Und natürlich auch die neuen Abmessungn des Bildes. Du scheinst da ein Problem zwischen der eigentlichen Darstellungsgröße bzw. der anzuzeigenden Größe zu haben. Wie greiftst du denn auf die geänderte Größe dzu bei der Funktion?

Und mal ganz abgesehen davon passt das Verhältnis von X und Y Abmessungen deiner Änderung ja nicht zum Format des Bildes.

Wichtig ist, dass du mit deiner Funktion auch wirklich auf das geänderte Bild zugreifst und nicht auf das Original. Denn nur dann kann deine Funktion frisch auf die geänderten Abmessunge zugreifen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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