|
| Autor |
Nachricht |
HH99 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 »

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.
Hoffe das hilft dir. |
|
| |
|
 |
HH99 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 |
|
| |
|
 |
|
|