Page 63 - электрондык_окулык
P. 63

Программаны шақырғаннан кейінгі жұмысшы терезенің түрі

                  Зертханалық  жұмыстың  тапсырмасы:  Формаға  қажетті  компоненталарды  қосыңыз.
                  Терезе формасын µзгертіњіз.

                  №7  зертханалық  жұмыс.    Форманың  градиентті  бояуын  пайдалана  отырып  интерфейс
                  құру.
                  GradientRect  процедурасы  градиент  сызықтарымен  бояп  шығады  (жоғары  және  тӛмен).
                  Параметрлері: түстер [басынан аяғына дейін] және Canvas объектісі, оның жоғары бӛлігі
                  боялатын болады.
                  Жұмыстың орындалу әдістемесі:
                        1.      Жаңа проекті құрыңыз және оны жеке бумада сақтаңыз.
                        2.      Негізгі  public  procedure  GradientRect(FromRGB,  ToRGB:  TColor;  Canvas:
                      TCanvas) процедураны жариялаңыз;
                        1.      Программаның негізгі бӛлімінде келесі кодты жазыңыз:
                  procedure TForm1.GradientRect (FromRGB, ToRGB: TColor; Canvas: TCanvas);
                  var
                    RGBFrom : array[0..2] of Byte; { from RGB values }
                    RGBDiff : array[0..2] of integer; { difference of from/to RGB values }
                    ColorBand : TRect; { color band rectangular coordinates }
                    I : Integer; { color band index }
                    R : Byte; { a color band's R value }
                    G : Byte; { a color band's G value }
                    B : Byte; { a color band's B value }
                  begin
                    { extract from RGB values}
                    RGBFrom[0] := GetRValue (ColorToRGB (FromRGB));
                    RGBFrom[1] := GetGValue (ColorToRGB (FromRGB));
                    RGBFrom[2] := GetBValue (ColorToRGB (FromRGB));
                    { calculate difference of from and to RGB values}
                    RGBDiff[0] := GetRValue (ColorToRGB (ToRGB)) - RGBFrom[0];
                    RGBDiff[1] := GetGValue (ColorToRGB (ToRGB)) - RGBFrom[1];
                    RGBDiff[2] := GetBValue (ColorToRGB (ToRGB)) - RGBFrom[2];
                    { set pen sytle and mode}
                    Canvas.Pen.Style := psSolid;
                    Canvas.Pen.Mode := pmCopy;
                    { set color band's left and right coordinates}
                    ColorBand.Left := 0;
                    ColorBand.Right:= canvas.ClipRect.Right-Canvas.ClipRect.Left;
                    for I := 0 to $ff do begin
                      { calculate color band's top and bottom coordinates}
                      ColorBand.Top := MulDiv (I , canvas.ClipRect.Bottom-Canvas.ClipRect.Top, $100);
                      ColorBand.Bottom := MulDiv (I + 1,canvas.ClipRect.Bottom-Canvas.ClipRect.Top, $100);
                      { calculate color band color}
                      R := RGBFrom[0] + MulDiv (I, RGBDiff[0], $ff);
   58   59   60   61   62   63   64   65   66   67   68