Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
HH99
Newbie
Newbie

Anmeldedatum: 17.04.2009
Beiträge: 3

Farbe einer Linie komplementär?
Verfasst am: 17.04.2009, 09:06

Hallo,
meine Frage betrifft vb.net 2008:
Wenn man die Eigenschaften einer PictureBox aufmacht, kann man doch den Mauscursor (Eigenschaft "Cursor") auf "Cross" umstellen, dann kommt statt des üblichen Mauspfeils ein Kreuz.

Interessant dabei ist die Farbe, die sich irgendwie immer komplementär zu den darunterliegenden Pixeln der Grafik einstellt.

Dann kann man das Kreuz bei jeder Hintergrundfarbe immer gut erkennen.

Ist es möglich, diese "Farbe" auch bei einer gezeichneten Hilfslinie über der Grafik einzustellen?


(die darunterliegende Grafik kann ganz verschiedene feinkörnige Farbwerte annehmen)

Vielen Dank für jede Antwort!
-Hans
 
Marduk_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 17.06.2007
Beiträge: 389


Verfasst am: 17.04.2009, 19:56

Den Weg über die Farbe des Cursors bin ich nicht gegangen, ich glaub ohne weiteres kann man die Farbe auch gar nicht abfragen. Allerdings kann man ja die Farbe des Bildes auf einem bestimmten Pixel abfragen, da man die Koordinaten der Maus hat, ist das also kein Problem. Wenn man die Farbe des Bildes hat, kann man einfach die Komplementärfarbe bilden.

Hier mal ein Beispielcode (C#):
Code:

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            Color c = bit.GetPixel(e.X, e.Y);
            Color c1;
            c1 = Color.FromArgb(255, 255 - Convert.ToInt16(c.R), 255 - Convert.ToInt16(c.G), 255 - Convert.ToInt16(c.B));
            pictureBox3.BackColor = c1;
        }

Die K-Farbe berechnet sich einfach aus 255 - Kanalwert.
bit ist hier eine Bitmapvariable, man kann das Image so konvertieren:
Code:

Bitmap bit = new Bitmap(pictureBox1.Image);

Allerdings, wenn man das mit in das Move Event macht, rechnet der Rechner ewig für eine Farbe, da er ja bei jeder Bewegung das Image neu laden muss, also die Variable public machen und zur Startzeit schon laden lassen, dann hat man das Image im Speicher und es ist wunderbar schnell.
Smile

Hoffe das hilft dir.
 
HH99
Newbie
Newbie

Anmeldedatum: 17.04.2009
Beiträge: 3

*gelöst* komplementäre Farbe für Linie
Verfasst am: 18.04.2009, 21:04

Hallo Marduk_, besten Dank!
Deine Antwort war für mich sehr nützlich. immerhin kann ich mit deinem Tipp die K-Farbe leicht ausrechnen.
Die Sache mit dem Cursor ist nur ein Beispiel, dass es im Prinzip ja irgendwie gehen muss.

Ich habe aber für VB inzwischen von
ControlPaint.DrawReversibleLine(m_Pos1, m_Pos2, Me.BackColor)
erfahren.

(weiss aber nicht, ob es das in C# auch gibt...)

Nochmals Danke für Deine Hilfe.
Und: dies ist das beste vb-Forum hier!
-Hans
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: farbe, linie, cursor, mauscursor, hintergrundfarbe

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Open and Save Standart + Save und open frage 1160 03.05.2007, 18:56
Keine neuen Beiträge frage zu sendkey 736 22.04.2007, 21:45
Keine neuen Beiträge ne wichtige frage(= 977 08.04.2007, 12:34
Keine neuen Beiträge Ressource Frage 384 04.04.2007, 21:12
Keine neuen Beiträge Kurze Frage (noch sehr am anfang) 706 28.03.2007, 23:40
 


[ Time: 0.0599s ][ Queries: 86 (0.0196s) ][ GZIP on - Debug on ]