Вверх ↑
Ответов: 5227
Рейтинг: 587
#1: 2022-02-05 13:06:20 ЛС | профиль | цитата
nesco, да чё там писать то, если без академизма то примерно так

procedure THIGDIPFormGradient.DrawForm(ACanvas: PCanvas; const ARect: TRect;
AColor1,AColor2: TColor);
const
w: integer = 0;
h: integer = 0;

var
Graphics: TGPGraphics;
GPRect: TGPRect;
Pen: TGPPen;
Brush: TGPBrush;
BrushColor: TGPColor;
PenColor: TGPColor;
Color1,Color2: TGPColor;
GradBrush: TGPLinearGradientBrush;
R: TRect;
GPReg: TGPRegion;
begin
R := FForm.ClientRect;
// Создаём график
Graphics := TGPGraphics.Create(ACanvas.Handle);
// Создаём прямоугольник
GPRect := GDIPAPI.MakeRect(0, FPanel2.Height,FForm.Width,r.Bottom-FPanel2.Height);
// создаём перо для контура
PenColor := IntToGPColor(_prop_Color3,{_prop_Alpha1}255);
Pen := TGPPen.Create(PenColor,(_prop_BorderSize));

Color1 := IntToGPColor(AColor1,{_prop_Alpha1}255);
Color2 := IntToGPColor(AColor2,{_prop_Alpha2}255);

if _prop_StyleBkgnd = 0 then
Brush := TGPSolidBrush.Create(IntToGPColor(FForm.Color,255));

// заливка прямоугольника
if _prop_StyleBkgnd = 1 then // Gradient
Brush := TGPLinearGradientBrush.Create(GPRect, Color1, Color2, LinearGradientModeVertical);

if _prop_StyleBkgnd = 2 then // Brush GDI+
Brush := TGPHatchBrush.Create(THatchStyle(_prop_BrushID),Color1, Color2);

//if _prop_StyleBkgnd = 3 then // UseBrush
// Brush := TGPTextureBrush.Create();

Graphics.FillRectangle(Brush,GPRect);
// рисуем контур
if _prop_BorderSize >= 1 then
begin
GPRect := GDIPAPI.MakeRect(0, 0,FForm.Width,FForm.Height);
Graphics.DrawRectangle(Pen,GPRect);
end else //begin
Graphics.DrawLine(Pen,0,0,FForm.Width,0);

Pen.Free;
Brush.Free;
Graphics.Free;
end;

Альфу наверно тоже добавлю, а то везде есть а тут чёт забыл
сейчас процедурку доделаю StreamImg to TGPTextureBrush и вся любовь
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0