📄 iplotannotation.pas
字号:
begin
ATextFlags := [itfNoClip];
case FTextHorzAlignment of
iahCenter : begin
ATextFlags := ATextFlags + [itfHCenter];
ATextRect.Left := ATextRect.Left - AWidth div 2;
ATextRect.Right := ATextRect.Right + AWidth div 2;
end;
iahLeft : begin
ATextFlags := ATextFlags + [itfHLeft];
ATextRect.Right := ATextRect.Left + AWidth;
end;
iahRight : begin
ATextFlags := ATextFlags + [itfHRight];
ATextRect.Left := ATextRect.Right - AWidth;
end;
end;
case FTextVertAlignment of
iavCenter : begin
ATextFlags := ATextFlags + [itfVCenter];
ATextRect.Top := ATextRect.Top - AHeight div 2;
ATextRect.Bottom := ATextRect.Bottom + AHeight div 2;
end;
iavTop : begin
ATextFlags := ATextFlags + [itfVTop];
ATextRect.Bottom := ATextRect.Top + AHeight;
end;
iavBottom : begin
ATextFlags := ATextFlags + [itfVBottom];
ATextRect.Top := ATextRect.Top - AHeight;
end;
end;
FClickRect := ATextRect;
iDrawText(Canvas, Text, ATextRect, ATextFlags);
end;
end;
ipasTextBox : begin
Font.Assign(Self.Font);
ATextRect := iXYReverseRect(XYAxesReversed,PixelsX, PixelsY, PixelsX, PixelsY);
AWidth := iTextWidth(Canvas, FText);
ARect := Rect(0, 0, AWidth, 0);
AHeight := iDrawText(Canvas, FText, ARect, [itfCalcRect, itfWordBreak]);
FShowing := True;
if FTextRotation <> ira000 then
begin
Pen.Color := PenColor;
Pen.Width := PenWidth;
Pen.Style := PenStyle;
Brush.Color := BrushColor;
Brush.Style := BrushStyle;
FClickRect := iDrawRotatedText(Canvas, Text, ATextRect, FTextRotation);
//Fudge Factors added for spacing look needed for typical strings.
FClickRect := Rect(FClickRect.Left - FOuterMargin - 3,
FClickRect.Top - FOuterMargin,
FClickRect.Right + FOuterMargin + 2,
FClickRect.Bottom + FOuterMargin);
Rectangle(FClickRect.Left, FClickRect.Top, FClickRect.Right, FClickRect.Bottom);
Brush.Style := bsClear;
FClickRect := iDrawRotatedText(Canvas, Text, ATextRect, FTextRotation);
IntersectRect(FClickRect, FClickRect, FDataView.DrawRect);
end
else
begin
ATextFlags := [itfNoClip];
case FTextHorzAlignment of
iahCenter : begin
ATextFlags := ATextFlags + [itfHCenter];
ATextRect.Left := ATextRect.Left - AWidth div 2;
ATextRect.Right := ATextRect.Right + AWidth div 2;
end;
iahLeft : begin
ATextFlags := ATextFlags + [itfHLeft];
ATextRect.Right := ATextRect.Left + AWidth;
end;
iahRight : begin
ATextFlags := ATextFlags + [itfHRight];
ATextRect.Left := ATextRect.Right - AWidth;
end;
end;
case FTextVertAlignment of
iavCenter : begin
ATextFlags := ATextFlags + [itfVCenter];
ATextRect.Top := ATextRect.Top - AHeight div 2;
ATextRect.Bottom := ATextRect.Bottom + AHeight div 2;
end;
iavTop : begin
ATextFlags := ATextFlags + [itfVTop];
ATextRect.Bottom := ATextRect.Top + AHeight;
end;
iavBottom : begin
ATextFlags := ATextFlags + [itfVBottom];
ATextRect.Top := ATextRect.Top - AHeight;
end;
end;
Pen.Color := PenColor;
Pen.Width := PenWidth;
Pen.Style := PenStyle;
Brush.Color := BrushColor;
Brush.Style := BrushStyle;
//Fudge Factors added for spacing look needed for typical strings.
FClickRect := Rect(ATextRect.Left - FOuterMargin - 3,
ATextRect.Top - FOuterMargin,
ATextRect.Right + FOuterMargin + 2,
ATextRect.Bottom + FOuterMargin);
Rectangle(FClickRect.Left, FClickRect.Top, FClickRect.Right, FClickRect.Bottom);
Brush.Style := bsClear;
iDrawText(Canvas, Text, ATextRect, ATextFlags);
end;
end;
ipasLine : begin
PixelsX := PositionXToPixels(X);
PixelsX2 := PositionXToPixels(X2);
PixelsY := PositionYToPixels(Y);
PixelsY2 := PositionYToPixels(Y2);
APoint1 := iXYReversePoint(XYAxesReversed, PixelsX, PixelsY );
APoint2 := iXYReversePoint(XYAxesReversed, PixelsX2, PixelsY2);
ARect := iXYReverseRect(XYAxesReversed, PixelsX, PixelsY, PixelsX2, PixelsY2);
if IntersectRect(DummyRect, FDataView.DrawRect, iXYReverseRect(XYAxesReversed, PixelsX-1, PixelsY-1, PixelsX2+1, PixelsY2+1)) then
begin
Pen.Color := PenColor;
Pen.Width := PenWidth;
Pen.Style := PenStyle;
Polyline([APoint1, APoint2]);
end;
end;
ipasLineX : begin
PixelsX := PositionXToPixels(X);
PixelsX2 := PixelsX;
PixelsY := GetYMax;
PixelsY2 := GetYMin;
ARect := iXYReverseRect(XYAxesReversed, PixelsX, PixelsY, PixelsX2, PixelsY2);
if IntersectRect(DummyRect, FDataView.DrawRect, iXYReverseRect(XYAxesReversed, PixelsX-1, PixelsY-1, PixelsX2+1, PixelsY2+1)) then
begin
Pen.Color := PenColor;
Pen.Width := PenWidth;
Pen.Style := PenStyle;
Polyline([Point(ARect.Left ,ARect.Top), Point(ARect.Right, ARect.Bottom)]);
FShowing := True;
FClickRect := iXYReverseRect(XYAxesReversed, PixelsX-5, PixelsY, PixelsX+5, PixelsY2);
end;
end;
ipasLineY : begin
PixelsY := PositionYToPixels(Y);
PixelsY2 := PixelsY;
PixelsX := GetXMax;
PixelsX2 := GetXMin;
ARect := iXYReverseRect(XYAxesReversed, PixelsX, PixelsY, PixelsX2, PixelsY2);
if IntersectRect(DummyRect, FDataView.DrawRect, iXYReverseRect(XYAxesReversed, PixelsX-1, PixelsY-1, PixelsX2+1, PixelsY2+1)) then
begin
Pen.Color := PenColor;
Pen.Width := PenWidth;
Pen.Style := PenStyle;
Polyline([Point(ARect.Left ,ARect.Top), Point(ARect.Right, ARect.Bottom)]);
FShowing := True;
FClickRect := iXYReverseRect(XYAxesReversed, PixelsX, PixelsY-5, PixelsX2, PixelsY2+5);
end;
end;
ipasRectangle : begin
ARect := iXYReverseRect(XYAxesReversed, PositionXToPixels(X - FWidth/2), PositionYToPixels(Y - FHeight/2),
PositionXToPixels(X + FWidth/2), PositionYToPixels(Y + FHeight/2));
if IntersectRect(DummyRect, FDataView.DrawRect, ARect) then
begin
Pen.Color := PenColor;
Pen.Width := PenWidth;
Pen.Style := PenStyle;
Brush.Color := BrushColor;
Brush.Style := BrushStyle;
Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom);
FShowing := True;
FDrawRect := ARect;
IntersectRect(FClickRect, ARect, FDataView.DrawRect);
IntersectRect(FSizeTopLeftRect, Rect(ARect.Left - 3, ARect.Top - 3, ARect.Left + 3, ARect.Top + 3), FDataView.DrawRect);
IntersectRect(FSizeTopRightRect, Rect(ARect.Right - 3, ARect.Top - 3, ARect.Right + 3, ARect.Top + 3), FDataView.DrawRect);
IntersectRect(FSizeBottomLeftRect, Rect(ARect.Left - 3, ARect.Bottom - 3, ARect.Left + 3, ARect.Bottom + 3), FDataView.DrawRect);
IntersectRect(FSizeBottomRightRect, Rect(ARect.Right - 3, ARect.Bottom - 3, ARect.Right + 3, ARect.Bottom + 3), FDataView.DrawRect);
if UserSelected and FShowFocusRect then
begin
if Pen.Style = psSolid then Brush.Color := Pen.Color;
Brush.Style := bsSolid;
Pen.Style := psSolid;
{$IFDEF iVCL}
InvertRect(Canvas.Handle, FSizeTopLeftRect);
InvertRect(Canvas.Handle, FSizeTopRightRect);
InvertRect(Canvas.Handle, FSizeBottomLeftRect);
InvertRect(Canvas.Handle, FSizeBottomRightRect);
{$ENDIF}
{$IFDEF iCLX}
iRectangle(Canvas, FSizeTopLeftRect);
iRectangle(Canvas, FSizeTopRightRect);
iRectangle(Canvas, FSizeBottomLeftRect);
iRectangle(Canvas, FSizeBottomRightRect);
{$ENDIF}
end;
end;
end;
ipasEllipse : begin
ARect := iXYReverseRect(XYAxesReversed, PositionXToPixels(X ), PositionYToPixels(Y ),
PositionXToPixels(X2), PositionYToPixels(Y2));
if IntersectRect(DummyRect, FDataView.DrawRect, ARect) then
begin
Pen.Color := PenColor;
Pen.Width := PenWidth;
Pen.Style := PenStyle;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -