Bitmaps mit WxWidgets in DialogBlocks erzeugen
-
Hallo Leute....
Ich bin wirklich der unerfahrenste Noob in der Geschichte und ich hoffe ihr könnt mir da bisschen weiterhelfen.
Man hat mich in ein Projekt reingeschmissen und ich muß hier von Null anfangenIch soll eine Bitmap (einen Balken) in ein Fenster einzeichnen lassen, welche einen Farbverlauf hat und Flexibel ist (sollte das Fenster vergrößert werden). In das Fenster wird ein Schriftzug eingebaut.
Das klappt alles wunderbar. jedoch möchte ich einen Farbverlauf von einer Farbe in eine andere und komme hier seit drei Tagen nicht weiter.
Desweiteren sollte der Balken etwas kürzer werden (also die default-größe) und auch wesentlich niedriger. Also ungefähr so wie der oberste Farbverlauf in einem normalen Window.Hier der Quelltext bisher:
#include "LcaaGUIStatBitmap.hpp" #define P_WIDTH 12 #define FACTOR (unsigned char)2 #define __R (unsigned char)40 #define __G (unsigned char)150 #define __B (unsigned char)0 namespace lcaa { namespace gui { LcaaGUIStatBitmap::LcaaGUIStatBitmap( wxWindow* parent, wxWindowID id, const wxSize& size, wxFont &font, const wxString& text, wxPoint &txtPoint, long style, const wxString& name){ int i; unsigned char r,g,b; wxMemoryDC mDC; r=__R; g=__G; b=__B; wxBitmap bmp(size.GetWidth(),size.GetHeight()); mDC.SelectObject( bmp ); wxColour col(r,g,b); wxPen pn(col,P_WIDTH); mDC.SetPen(pn); for( i=0; i<(size.GetWidth()+P_WIDTH); i +=P_WIDTH){ if ( r < 255 && g < 255 && b < 255 ){ r +=FACTOR; g +=FACTOR; b +=FACTOR; } col.Set(r,g,b); pn.SetColour(col); mDC.SetPen(pn); mDC.DrawLine(i,0,i,size.GetHeight()); } mDC.SetFont(font); mDC.SetTextForeground(*wxWHITE); mDC.DrawText(text,txtPoint.x,txtPoint.y); mDC.SelectObject( wxNullBitmap ); Create( parent,id,bmp,wxDefaultPosition,size,style,name); } }} /* namespace lcaa, gui */
edit: codetags bitte verwenden!
-
Und was ist jetzt deine Frage?
Soll es ein Bitmap sein?
Oder mehr ein Fenster mit Farbverlauf im Hintergrund?
Letzteres würde ich in dem Fall von wxPanel ableiten, und in der OnPaint den Farbverlauf zeichnen.
-
Naja, ich kriegs net hin, daß der Farbverlauf von einer Farbe in eine andere läuft.
Also z. B. von grün nach braun.
An sich soll das Prinzip schon so sein, daß es mit einer Schleife läuft und die größe flexibel bleiben soll. Denn wenn der User das Fenster vergrößert, soll der Balken auch länger werden.Meine Frage: Wie kann ich die Höhe des Balkens bestimmen?
Ich setze einen Stift (wxPen) und ziehe einen verikalen Strich welcher sich durch die Schleife wiederholt und sich dabei in der Sättigkeit der Farbe verändert.
Und diesen Strich möchte ich in der Länge bestimmen.
-
Also die Höhe bzw. Breite müsstest du mit GetSize bekommen, gegebenenfalls noch für dich runterrechnen,
so das der Farbverlauf nicht das ganze Fenster bedeckt z.B.Was den Farbverlauf angeht, solltest du dir Gedanken machen wie das genau aussehen soll,
und wie breit jeweils ein einzelner Strich des Farbverlaufs sein soll.
-
Die breite des Striches definiere ich mit P_WIDTH. Das funkzt schon.
Achja... Hab ja Deine Frage noch garnicht beantwortet. Der Balken mit dem Farbverlauf wird im Fenster eingebaut.
Aber erstmnal ein riesen DANKESCHÖN für Deine Hilfe...