⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iplotannotation.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 5 页
字号:
                                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 + -