Thanks Max, 

  I will see what I can come up with. Most of the control is not the background color. 
The appointment row, actually use 8x8 bitmaps to give a slightly textured look. 

Thanks for the info, I will see what I can do...

Chris

Christopher Crowe (Software Developer)
Microsoft MVP, MCP

Adrock Software
Byte Computer & Software LTD
P.O Box 13-155 
Christchurch
New Zealand
Phone/Fax (NZ) 03-3651-112


> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of Max Nilson
> Sent: Thursday, 27 May 1999 13:29
> To: Multiple recipients of list Delphi
> Subject: RE: [DUG]: Drawing Speed
> 
> 
> Chris Crowe further asked:
> 
> > ps: Look at outlook's day view and that is the look I am after.
> [ snippage ]
> > So from what you are saying..
> >
> > I must:
> >
> > 1)  Create a region for say #1 above, and draw that.
> > 2)  Create a region below #1 and draw that.
> > 3)  Draw the time incrments etc..?
> > 4)  How do I draw the rows, and the appointments?, since the
> > rows must be drawn before the appointment.
> 
> Not quite. I'm assuming that the entire day view is one control 
> and I'd draw
> as follows:
> 
> 0. Create a utility method:
> 
> procedure TDayPlanner.RepaintedRect(const Rect: TRect);
> var
>   Rgn: HRGN;
> begin
>   if RepaintRgn <> 0 then
>     begin
>       Rgn := CreateRectRgnIndirect(Rect);
>       CombineRgn(FRepaintRgn, FRepaintRgn, Rgn, RGN_DIFF);
>       DeleteObject(Rgn)
>     end
> end;
> 
> 1. Create an region containing the entire day view control:
> 
> RepaintRgn := CreateRectRegionIndirect(BoundsRect);
> 
> 2. For every area on the control that is not going to be the background
> color draw it somthing like:
> 
> TextRect(TextRect, 0, 0, 'Some stuff');
> RepaintedRect(TextRect)
> 
> or
> 
> MoveTo(ColStart - 1, RowHeight);
> LineTo(ColStart - 1, FooterStart);
> RepaintedRect(Rect(ColStart - 1, RowHeight, ColStart, FooterStart))
> 
> or what ever regions need painting in whar ever order makes things look
> good.
> 
> 3. When all the drawing is done you do
> 
> FillRgn(Canvas.Handle, RepaintRgn, Canvas.Brush.Handle);
> 
> to repaint all the bits that haven't been drawn on so far.
> 
> The entire thing can be broken down into small regions for 
> repainting it you
> need seperate background colors over large regions, but that's 
> basically the
> idea.
> 
> In general the concept is to repaint every single pixel in the 
> invalid area
> on the assumption that you haven't cleared the area before hand. A good
> debugging trick is to paint the entire area in purple, or bright 
> green first
> and then look after to see if you have missed any bits.
> 
> Cheers, Max.
> 
> 
> ------------------------------------------------------------------
> ---------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> 

---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz

Reply via email to