仿 Delphi 设计虚线背景 ╰+攻爆jí腚メ 2022-04-01 17:09 141阅读 0赞 procedure TForm1.DrawBackground; var FScale : integer; FGridX :double; FGridY :double; procedure Line(x, y, x1, y1: Integer); begin Canvas.MoveTo(x, y); Canvas.LineTo(x1, y1); end ; function ReverseColor(AColor: TColor): TColor; var iR0, iR1, iG0, iG1, iB0, iB1: integer; begin iR0 : = GetRValue(AColor); iR1 : = 255 \- iR0; iG0 : = GetGValue(AColor); iG1 : = 255 \- iG0; iB0 : = GetBValue(AColor); iB1 : = 255 \- iB0; Result : = RGB(iR1, iG1, iB1); end ; procedure DrawPoints; var GridBmp: TBitmap; i: Extended; c: TColor; dx, dy: Extended; begin c : = ReverseColor(self.Color); FScale : = 1 ; FGridX : = 5 ; // 96 / 25.4 FGridY : = 5 ; // 96 / 25.4 dx : = FGridX \* FScale; dy : = FGridY \* FScale; if (dx > 2 ) and (dy > 2 ) then begin GridBmp : = TBitmap.Create; GridBmp.Width: = Width; GridBmp.Height : = 1 ; GridBmp.Canvas.Pen.Color : = self.Color; GridBmp.Canvas.MoveTo( 0 , 0 ); GridBmp.Canvas.LineTo(Width, 0 ); i : = 0 ; while i < Width do begin GridBmp.Canvas.Pixels\[Round(i), 0 \] : = c; i : = i \+ dx; end ; i : = 0 ; while i < Height do begin Canvas.Draw( 0 , Round(i), GridBmp); i : = i \+ dy; end ; GridBmp.Free; end ; end ; begin DrawPoints; end ;
还没有评论,来说两句吧...