Archive

Archive for the ‘Graphics’ Category

How to Determine the Screen Resolution

December 15th, 1999 m3Rlin No comments

There are two ways to determine the screen’s height and width.

1) Use the global Screen variable.

uses
  Forms;
...
  Screen.Height { Screen height in pixels }
  Screen.Width  { Screen width in pixels  }
...

2) Use the Windows API GetSystemMetrics() function. This function can be useful in applications that don’t use the VCL like console applications.

uses
  Windows;
...
  GetSystemMetric(SM_CXSCREEN) { Screen height in pixels }
  GetSystemMetric(SM_CYSCREEN) { Screen width in pixels  }
...

How to Create a Gradient Form

December 15th, 1999 m3Rlin No comments

In setup programs or sometimes in AboutBoxes you can find gradient forms.

It sure looks as if it were a lot of work but it’s really very easy. All you have to do is add this code to your program.
This example will create a gradient rectangle on the whole form Canvas. To change it’s size just change the parameters of the Rectangle() function.

Add this code to your form’s OnPaint event:

1) Constant number of steps:

const
  btN = 100; { Number of steps }
var
  iI: Integer;
  Col: TColor;
begin
  for iI := 0 to btN - 1 do
    with Canvas do begin
      Col := RGB(0, 0, Round(50 + 205 * (iI / btN)));
      Pen.Color := Col;
      Brush.Color := Col;
      Rectangle(0, Round(ClientHeight * (iI / btN)), ClientWidth, Round(ClientHeight * ((iI + 1) / btN)));
    end;
end;

To get rid of problems when resizing the form just add this code to the form’s OnResize event:

...
Invalidate;
...

2) It calculates the number of steps:

var
  wHeight, wRow: Word;
begin
  wHeight := (ClientHeight + 255) div 256;
  for Row := 0 to 255 do
    with Canvas do begin
      Brush.Color := RGB(wRow, 0, 0); { Modify this for a different color }
      FillRect(Rect(0, wRow * wHeight, ClientWidth, (wRow + 1) * wHeight)) ;
    end;
end;

3) Hacking our way around… :-)
This function works in Delphi 3 but not in Delphi 4.

uses
  Charts;
...
  GradientFill(Canvas, ClientRect, clBlack, clBlue, False);
...