Streifenmuster unter WinCE

Streifenmuster unter WinCE

Beitragvon mayer » 25. Feb 2008, 15:20 Streifenmuster unter WinCE

Hallo 8),
seit einiger Zeit beschäftige ich mich ja nun mit Grafik unter CE, aber nun stehe ich wieder an einer Hürde.

Ich habe mich mehrere Stunden damit beschäftigt aber es will nicht funktionieren.

hier mein Code: (zwei Versionen und beide funktionieren nicht)

Code: Alles auswählen
With ListIconBox.Picture.Bitmap.Canvas do
  begin
   {for i := 0 to ListIconBox.Height div 34 do begin
     Brush.Color := RGB(237,243,254);
     FillRect(Rect(0,i*16,ListIconBox.Width,16));
     Brush.Color := RGB(255,255,255);
     FillRect(Rect(0,(i+1)*16,ListIconBox.Width,16));
     //er müsste zu i immer +2 addieren
   end; }

   Brush.Color := RGB(255,0,0);
   FillRect(Rect(0,0*16,ListIconBox.Width,16));
   FillRect(Rect(0,2*16,ListIconBox.Width,16));
   FillRect(Rect(0,4*16,ListIconBox.Width,16));
   FillRect(Rect(0,5*16,ListIconBox.Width,16));
   Brush.Color := RGB(255,255,255);
   FillRect(Rect(0,1*16,ListIconBox.Width,16));
   FillRect(Rect(0,3*16,ListIconBox.Width,16));
   FillRect(Rect(0,5*16,ListIconBox.Width,16));
   FillRect(Rect(0,7*16,ListIconBox.Width,16));
  end;


Für schnelle und gute Hilfe wäre ich sehr dankbar!
Zuletzt geändert von mayer am 25. Feb 2008, 17:46, insgesamt 1-mal geändert.
mayer
 
Beiträge: 23
Registriert: 11. Feb 2008, 17:51
Wohnort: Regau

Beitragvon bembulak » 25. Feb 2008, 15:45

Servus,

was heißt will nicht funktionieren?

Programm läuft, aber tut nicht, was es soll? Was tut es dann?
Programm bricht beim Kompilieren ab? Welche Fehlermeldung?
Hast du geschaut, wie weit die von dir verwendeten Komponenten von CE überhaupt unterstützt werden?

--> http://wiki.lazarus.freepascal.org/Roadmap

Was ist ListIconBox überhaupt für eine Komponente? Ein paar mehr Infos, bitte danke. Dann kann ich es nachbauen, oder du schickst mir das Projekt oder sonstwas.

Viele Grüße vom Cousin,
bembulak
 
Beiträge: 373
Registriert: 6. Feb 2007, 09:29
Wohnort: Oberösterreich
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3 | 
CPU-Target: 32bit i386, ARM
Nach oben

Beitragvon mayer » 25. Feb 2008, 17:46

bembulak hat geschrieben:Was ist ListIconBox überhaupt für eine Komponente?

Naja, ich stelle mir hald selbst ein ListIconBox zusammen die hald streifen hat und ob es funktioniert?
Ja, aber nicht so wie gedacht. Siehst dir an ;)

mfg
mayer
 
Beiträge: 23
Registriert: 11. Feb 2008, 17:51
Wohnort: Regau

Beitragvon pluto » 25. Feb 2008, 19:41

ich nehme an es handelt sich um eine Listbox:
Code: Alles auswählen
ListIconBox.Picture.Bitmap.Canvas

muss so lauten:
Code: Alles auswählen
ListIconBox.Canvas


Ich weiß zwar nicht genau was du vor hast, aber wenn du "nur" eine Icon Liste habe möchtest hast du zwei einfache Möglichkeiten unter Lazarus:
01 - ListView mit Imagelist
02 - ListBox. Du packst in jedem Listbox Eintrag ein TBitmap rein. bei DrawItem zeichnest du einfach nur. Ich habe gerade heute für ein Projekt sowas gemacht:
Code: Alles auswählen
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  ARect: TRect; State: TOwnerDrawState);
var
  t:Integer;
begin
  ListBox1.Canvas.FillRect(aRect);
  t:=TPlutoImageListItem(ListBox1.items.Objects[index]).tag;
  ListBox1.Canvas.Draw(ARect.Left,ARect.Top, TPlutoImageListItem(ListBox1.items.Objects[index]).image);
  if t = 0 then
    ListBox1.Canvas.Font.Color:=clBlack
  else
    ListBox1.Canvas.Font.Color:=clGray;
 
  ListBox1.Canvas.TextOut(ARect.Left+22,ARect.Top,ListBox1.items[index]);
end; // TForm1.ListBox1DrawItem   
 
// du musst den ListBox style auf lbOwnerDrawVariable settzen.
// Das füllen geht auch ganz leicht:
Listbox1.items.addobject(Caption, varTBitmap).


Ich hoffe das hilft dir irgendwie.... Grafik ist schon was tolles gerade Canvas. *G*

Edit00: Das Beispiel zeigt aber nur wenige Möglichkeiten Du kannst auch Brush und Pen verändert und den Status abfragen ob der Eintrag Markiert ist oder nicht. !
Der Code von oben ist nur als Beispiel gedacht. Du müsstet ihn noch anpassen für dein zweck !
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6534
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.1 | 
CPU-Target: AMD
Nach oben

Beitragvon mayer » 25. Feb 2008, 21:22

danke pluto aber ich habe TImage und in dieses "mahle" ich eines art ListIconBox.
naja eigentlich wollte ich nur wissen warum bei mir das nicht richtig dargestellt wird...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mayer
 
Beiträge: 23
Registriert: 11. Feb 2008, 17:51
Wohnort: Regau

Beitragvon pluto » 25. Feb 2008, 21:44

Wenn ich das richtig verstehe fehlen einfach nur die Balken beim zweiten Beispiel oder wie ?
Tut mir leid ich kann mir nicht vorstellen was du meinst. Im Beispiel oben fällt evlt. ein TextOut.... beschreibe es mal genauer.

Um auf das Canvas der Image zu zeichnen reicht auch:
ListIconBox.Canvas
Normalerweise glaube ich.
MFG
Michael Springwald
Aktuelles Projekt: PlutoArduino
pluto
 
Beiträge: 6534
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg/Oldenburg
OS, Lazarus, FPC: Linux Mint 18.1 | 
CPU-Target: AMD
Nach oben

Beitragvon mayer » 25. Feb 2008, 21:58

Mach mal bei Lazarus ein neues Projekt auf und zeichne auf die form ein TImage mit Name := ListIconBox und beim event OnCreate (von TForm)
gibst du ein:

Code: Alles auswählen
procedure ...;
var
ListTempImage : TBitmap;
begin
  ListTempImage := TBitmap.Create;
  ListTempImage .Width := ListIconBox.Width;
  ListTempImage .Height := ListIconBox.Height;
  ListIconBox.Picture.Bitmap := ListTempImage ;
  ListTempImage .Free;
 
  With ListIconBox.Picture.Bitmap.Canvas do
    begin
     {for i := 0 to ListIconBox.Height div 34 do begin
       Brush.Color := RGB(237,243,254);
       FillRect(Rect(0,i*16,ListIconBox.Width,16));
       Brush.Color := RGB(255,255,255);
       FillRect(Rect(0,(i+1)*16,ListIconBox.Width,16));
       //er müsste zu i immer +2 addieren
     end; }

     Brush.Color := RGB(255,0,0);
     FillRect(Rect(0,0*16,ListIconBox.Width,16));
     FillRect(Rect(0,2*16,ListIconBox.Width,16));
     FillRect(Rect(0,4*16,ListIconBox.Width,16));
     FillRect(Rect(0,5*16,ListIconBox.Width,16));
     Brush.Color := RGB(255,255,255);
     FillRect(Rect(0,1*16,ListIconBox.Width,16));
     FillRect(Rect(0,3*16,ListIconBox.Width,16));
     FillRect(Rect(0,5*16,ListIconBox.Width,16));
     FillRect(Rect(0,7*16,ListIconBox.Width,16));
  end;
end;


dann wirst du sehn das es nicht richtig angezeigt wird!
mayer
 
Beiträge: 23
Registriert: 11. Feb 2008, 17:51
Wohnort: Regau

Beitragvon bembulak » 25. Feb 2008, 22:44

LOL, ich wollte deinen Code gerade mal so testen, da meckert mir Lazarus rum, dass der Identifier "RGB()" nicht gefunden werden kann. Spaßig. :(

Hat mal schnell wer einen Tip, welche Unit mir da weiterhilft (die ich offenbar nicht in meiner Uses-Klausel habe). Danke.
bembulak
 
Beiträge: 373
Registriert: 6. Feb 2007, 09:29
Wohnort: Oberösterreich
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3 | 
CPU-Target: 32bit i386, ARM
Nach oben

Beitragvon mayer » 25. Feb 2008, 23:01

Code: Alles auswählen
function RGB(const R, G, B: Byte): Integer;
begin
  Result := R + G shl 8 + B shl 16;
end;

hier viel spaß!
mayer
 
Beiträge: 23
Registriert: 11. Feb 2008, 17:51
Wohnort: Regau

Beitragvon theo » 25. Feb 2008, 23:29

bembulak hat geschrieben:LOL, ich wollte deinen Code gerade mal so testen, da meckert mir Lazarus rum, dass der Identifier "RGB()" nicht gefunden werden kann. Spaßig. :(

Hat mal schnell wer einen Tip, welche Unit mir da weiterhilft (die ich offenbar nicht in meiner Uses-Klausel habe). Danke.


LCLIntf oder die Funktion RGBToColor(); aus Graphics müsst's auch tun.
theo
 
Beiträge: 8046
Registriert: 11. Sep 2006, 18:01

Beitragvon mayer » 28. Feb 2008, 23:25

Naja danke für die vielen Antworten, aber dann muss ich das Problem wohl anders lösen...
Danke!
mayer
 
Beiträge: 23
Registriert: 11. Feb 2008, 17:51
Wohnort: Regau

• Themenende •

Zurück zu Windows mobile



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried