Difference between revisions of "Lazarus Custom Drawn Controls"

From Lazarus wiki
Line 10: Line 10:
  
 
==Custom Drawn Controls in the LCL==
 
==Custom Drawn Controls in the LCL==
 +
 +
===TCDButton===
 +
 +
This is a fully custom drawn button.
 +
 +
Current location in the code: http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/components/customdrawn/customdrawnextras.pas?view=markup&root=lazarus
  
 
===TCDGroupBox===
 
===TCDGroupBox===
 +
 +
This is a fully custom drawn group box.
  
 
Current location in the code: http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/components/customdrawn/customdrawnextras.pas?view=markup&root=lazarus
 
Current location in the code: http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/components/customdrawn/customdrawnextras.pas?view=markup&root=lazarus

Revision as of 21:02, 15 November 2010

The Lazarus Custom Drawn Controls are a set of controls equivalent to the standard Lazarus controls, but which draw themselves. They can have many uses, including the hability to fully customize the drawing, the hability to have exactly the same look in different platforms and also a higher consistency of behavior.

This set of controls is divided into two parts: The custom drawn controls which are useful for implementing Lazarus widgetsets and are located in the unit lazarus/lcl/customdrawncontrols.pas, and all other custom drawn controls, which are used often, but aren't indispensable to implement a LCL custom drawn widgetset. Those are located in the package lazarus/components/customdrawn.

How do these components work?

The basic programming technique utilized by this set of controls is explained in the page Developing with Graphics#Create a custom control which draws itself. Besides using a TCustomControl descendent, these components also use a TLazIntfImage and TFPImageCanvas instead of the usual TCanvas, in order to have a drawing precisely equal among platforms, as well as the possibility of fast pixel access. This programming technique is described in Developing with Graphics#Working with TLazIntfImage.

Custom Drawn Controls in the LCL

TCDButton

This is a fully custom drawn button.

Current location in the code: http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/components/customdrawn/customdrawnextras.pas?view=markup&root=lazarus

TCDGroupBox

This is a fully custom drawn group box.

Current location in the code: http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/components/customdrawn/customdrawnextras.pas?view=markup&root=lazarus

Custom Drawn Packages

TBitmappedButton

This control allows the easy creation of buttons based on images, which is very often used in games.

Location of the code in Lazarus: http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/components/customdrawn/customdrawnextras.pas?view=markup&root=lazarus