Graphics


17
May 10

Cool a new GlassButton!

GlassButton test demo

I liked the idea of having a “glassbutton” to use on my VistaPanel. So I decided to try making one. This is the result. It sure took a lot more work than I was thinking it would! Personally I like the result. There are some options to fine tune the result like, Glossy, GlossyLevel and the SingleBorder properties. Best result requires experimenting.

The “Arrow” property will add just that an arrow to the right side of the button. Combining it with the “DuoStyle” property will make the arrow get its own button part. Like you see in the image.

Hope you like it, have fun! Feedback is always welcome!

Download GlassButtonProject(253kB)


6
Apr 10

Smooth vista gradient panel

VistaPanel image

Good looking vista panel

What is it? Simply a panel with a gradient that look like the gradient used in Vista. Play with the colors and I am sure you can come up with something you like. There really isn’t more to say about this small component.

Some times I just get the idea of trying to figure out how they make that gradient, well this is my take at the Vista gradient bar. Enjoy!

Download Component

Roy M Klever


30
Jan 10

Alternative progressbar

Showing Vista Progress Bar

I guess most of you have allready found a replacement for default progressbar in D2007. If not take a look at my solution. It have similar look to the system progressbar but without any animation.

The component will work in any delphi version but I have only tested it in D2007 and D2010.

It is licensed as freeware so no limitations on its use except you can not charge for it.

Download VistaProBar


14
Jan 10

Small but smart colorpicker

Small but smart colorpicker

The small but smart color picker

This is my attempt at making a small but smart color picker. It has two modes and can be used for live color updating. The mode shown in image is Alphamode:= True, second mode will then be Alphamode:= False which will be more aimed at web design.

To set the colorpickers color use:
SetColor(Color, Alpha, Update) or SetColor(Color, Update) where Update is a boolean which if false will set old color to color value.

Alpha is a value between 0 and 255.

To get color value use GetColor. Alpha value is stored in RGBAlpha.

Download: Color Picker (260kB)


2
Jan 10

Mixing two colors

Just a quick tips for those of you needing to blend two colors. Usage is very easy.

// Usage  NewColor:= Blend(Color1, Color2, blending level 0 to 100);
function Blend(Color1, Color2: TColor; A: Byte): TColor;
var
  c1, c2: LongInt;
  r, g, b, v1, v2: byte;
begin
  A:= Round(2.55 * A);
  c1 := ColorToRGB(Color1);
  c2 := ColorToRGB(Color2);
  v1:= Byte(c1);
  v2:= Byte(c2);
  r:= A * (v1 - v2) shr 8 + v2;
  v1:= Byte(c1 shr 8);
  v2:= Byte(c2 shr 8);
  g:= A * (v1 - v2) shr 8 + v2;
  v1:= Byte(c1 shr 16);
  v2:= Byte(c2 shr 16);
  b:= A * (v1 - v2) shr 8 + v2;
  Result := (b shl 16) + (g shl 8) + r;
end;

23
Nov 09

Threaded thumbnails demo

Yet another thumbnails demo, this time showing how to make the thumbnails in a seperate thread. There is a small problem which I belive is caused by the Delphi jpeg unit which sometime will render a thumbnail empty. With empty I mean that it has the correct width and height but not the image itself but just a white rectangle. If you figure out how to fix it please tell me so I can fix it. It only happens once and awhile so it is not easy to pinpoint what is causing it.

This demo also fix some problems which was present in previus thumbnail demos so if you had problems with previus demos try this one.

Using a diffrent imagelib seems to solve the problem reagarding blank thumbnail. I strongly recomend ImageEn but also GraphicsEx is a good one.

You need rkView installed to run this demo. You find it under components.

Download project with source

Added 01.dec.2009:
The same demo using ImageEnIO for loading and making the thumbs. You need to have ImageEn installed to compile and run this demo.

Download project with source (21 kB)
Download compiled demo (1008 kB)


18
Jul 09

Adjust brightness, contrast and saturation ++

Adjust image demo

Adjust image demo

I have just uploaded a small demo of how to adjust brightness, contrast and saturation of an image. There are also two other usefull samples included in the demo. One is the auto adjustment setting (using histogram stretching) the other one is an exposure control, perfect for adjusting (lighten) dark pictures.

Hope you find it usefull and if you have some better ideas why not share em. These routines are based on a combination of my own and others ideas and source code.

Download: Project with Source


13
Jul 09

Cool thumbnails

An extra thumbnail post, the last one for a while.  I will show you how to edit caption of the thumbnail and how you can rate it using your mouse. The main activity is done in the CellHit event so make sure that CellSelect is set to false, somehow this must be done in code so a good place to do it is in formCreate event.

Rated thumbs

Rated thumbs

Here is the code for CellHit. One thing to remember about this event is that y is counted from the bottom and not from the top as normal. This can be a bit confusing.

procedure TfrmMain.viewMainCellHit(Sender: TObject; Canvas: TCanvas; Idx, x,
  y: Integer; var Selected: Boolean);
var
  i: Integer;
begin
  if (y < 20 ) then begin
    i:= 0;
    if (CellStyle = 0) and (y < 20) then i:= 1;
    if i <> CellEditIdx then begin
      CellEditIdx:= i;
      ViewMain.Invalidate;
    end;
  end else begin
    if CellEditIdx <> -1 then ViewMain.Invalidate;
    CellEditIdx:= -1;
  end;
  if CellStyle <> 1 then Exit;
  // Check if over rating stars
  if (x > HSX) and (x < HSX + 70) and (y < 20) then begin
    CellEditIdx:= 2;
    i:= 1 + (x - HSX) div 14;
    if i <> HotStars then begin
      HotStars:= i;
      ViewMain.Invalidate;
    end;
  end else begin
    if HotStars <> -1 then ViewMain.Invalidate;
    HotStars:= -1;
  end;
end;

This event code is called whenever mouse is over a cell to check if it is selected we use it to do some checking and set some flags which we use in the OnMouseDown event.

CellEditIdx is used to signal what to check for. If it is one we simply check if mouse is in the lower part of the thumb if it is we mark it and do a repaint. The same with rating we do a check to see if it is within the rating area and do a repaint if it changes value.

In the MouseDownEvent the action is done. If rating is active the selected thumb will be updated with the current rating. If rating is not active an editbox is activated giving you a chance to change the filename of the selected thumb. Note that in demo changing the name of the thumb will not change the real name of the file, it is just for showing you how to do it.

When tumbnail component got focus you can press F8 to see some statistic of current state.

Hope this helps a little. You should also update the rkView component used in this demo as some small bugs have been fixed. I will later publish rkview as a single post in its own with some more samples.

Next post up is how to adjust brightness, contrast and saturation to an image.

Download: Cool thumbnails


28
Jun 09

Showing thumbnails part #2

In part one I showed you how to show thumbnails in one predefined size, now it is time to take it to the next level. I show you how to make realtime resizable thumbnails.

Thumbs demo

Screenshot of thumbnails demo

The trick to make it work is to use an additional  list of bitmap thumbnails. Thumbnails is still kept as jpegs in the items list. The diffrence between previus version and this one is that when rendred to screen they are converted to bitmaps and cached in a bitmap list. This makes screen update faster and more pleasent.

I use a cache size of one point five the screensize but you can set it to whatever you want.

rkView has been updated so it is recommended that you recompile the package where you installed the rkView.

Enough said download the code and see for yourself. Enjoy and have fun!

Download: Thumbnails demo


20
Jun 09

Showing thumbnails part #1

I have split the thumbnail project into to parts. In part one, this one,  I will show you how to view thumbnails the easy way using rkView.

rkView is just like a virtual grid view, no data is stored inside it.  rkView was made to ease the task of viewing tumbnails but are not in any way limited to this task.  I also use this component as a ownerdraw listview. So go ahead an install this component (it is included in the download).

Screenshot of Thumbs demo

Screenshot of thumbnails demo

Showing thumbnails using rkView is an easy task all we need is a list of thumbnails and some code to draw it. rkView will call the ‘OnCellPaint’ event for each cell, giving us a canvas to paint on.

In this demo I have chosen to store the thumbnails as jpeg since it occupies less space than using bitmaps.

Well it is time to download and run the code.

Download: Thumbnails demo