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

📄 teslide.pas

📁 delphi2007界面效果控件源码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    27,
    28: begin;
          Inc(VisibleR.Bottom, Step);
          if Mode <> 27
          then
          begin
            if DoScroll
            then
            begin
              ScrollR := Rect(0, VisibleOldR.Bottom, Data.Width, Data.Height);
              ScrollDC(Data.Canvas.Handle, 0, Step, ScrollR, ClipR, 0, nil);
            end
            else
              BitBlt(Data.Canvas.Handle, 0, VisibleR.Bottom, Data.Width,
                Data.Height - VisibleR.Bottom, Data.SrcBmp.Canvas.Handle, 0, 0,
                cmSrcCopy);
          end
          else
            StretchBlt(Data.Canvas.Handle, 0, VisibleR.Bottom, Data.Width,
              Data.Height - VisibleR.Bottom, Data.SrcBmp.Canvas.Handle, 0, 0,
              Data.Width, Data.Height, cmSrcCopy);
          Data.UpdateRect := Rect(0, VisibleR.Bottom, Data.Width, Data.Height);
          if Mode = 28
          then
          begin
            StretchBlt(Data.Canvas.Handle, 0, 0, Data.Width, VisibleR.Bottom,
              Data.DstBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height,
              cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(0, 0, Data.Width, VisibleR.Bottom));
          end
          else
          begin
            BitBlt(Data.Canvas.Handle, 0, VisibleOldR.Bottom, Data.Width,
              Step, Data.DstBmp.Canvas.Handle, 0, VisibleOldR.Bottom, cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(0, VisibleOldR.Bottom, Data.Width, VisibleOldR.Bottom + Step));
          end;
        end;
    29,
    30,
    31: begin;
          Dec(VisibleR.Top, Step);
          if Mode <> 30
          then
          begin
            if DoScroll
            then
            begin
              ScrollR := Rect(0, 0, Data.Width, VisibleOldR.Top);
              ScrollDC(Data.Canvas.Handle, 0, -Step, ScrollR, ClipR, 0, nil);
            end
            else
            begin
              Inc(DstYDesp, Step);
              BitBlt(Data.Canvas.Handle, 0, 0, Data.Width, VisibleR.Top,
                Data.SrcBmp.Canvas.Handle, 0, DstYDesp, cmSrcCopy);
            end;
          end
          else
            StretchBlt(Data.Canvas.Handle, 0, 0, Data.Width, VisibleR.Top,
              Data.SrcBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height,
              cmSrcCopy);
          Data.UpdateRect := Rect(0, 0, Data.Width, VisibleR.Top);
          if Mode = 31
          then
          begin
            StretchBlt(Data.Canvas.Handle, 0, VisibleR.Top, Data.Width,
              Data.Height - VisibleR.Top, Data.DstBmp.Canvas.Handle, 0, 0,
              Data.Width, Data.Height, cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(0, VisibleR.Top, Data.Width, Data.Height));
          end
          else
            BitBlt(Data.Canvas.Handle, 0, VisibleR.Top, Data.Width, Step,
              Data.DstBmp.Canvas.Handle, 0, VisibleR.Top, cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(0, VisibleR.Top, Data.Width, VisibleR.Top + Step));
        end;
    32,
    33,
    34: begin;
          Dec(VisibleR.Left, Step);
          if Mode <> 33
          then
          begin
            if DoScroll
            then
            begin
              ScrollR := Rect(0, 0, VisibleOldR.Left, Data.Height);
              ScrollDC(Data.Canvas.Handle, -Step, 0, ScrollR, ClipR, 0, nil);
            end
            else
            begin
              Inc(DstXDesp, Step);
              BitBlt(Data.Canvas.Handle, 0, 0, VisibleR.Left, Data.Height,
                Data.SrcBmp.Canvas.Handle, DstXDesp, 0, cmSrcCopy);
            end;
          end
          else
            StretchBlt(Data.Canvas.Handle, 0, 0, VisibleR.Left, Data.Height,
              Data.SrcBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height,
              cmSrcCopy);
          Data.UpdateRect := Rect(0, 0, VisibleR.Left, Data.Height);
          if Mode = 34
          then
          begin
            StretchBlt(Data.Canvas.Handle, VisibleR.Left, 0,
              Data.Width - VisibleR.Left, Data.Height,
              Data.DstBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height,
              cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(VisibleR.Left, 0, Data.Width, Data.Height));
          end
          else
          begin
            BitBlt(Data.Canvas.Handle, VisibleR.Left, 0, Step, Data.Height,
              Data.DstBmp.Canvas.Handle, VisibleR.Left, 0, cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(VisibleR.Left, 0, VisibleR.Left + Step, Data.Height));
          end;
        end;
    35,
    36,
    37: begin;
          Inc(VisibleR.Right, Step);
          if Mode <> 36
          then
          begin
            if DoScroll
            then
            begin
              ScrollR := Rect(VisibleOldR.Right, 0, Data.Width, Data.Height);
              ScrollDC(Data.Canvas.Handle, Step, 0, ScrollR, ClipR, 0, nil);
            end
            else
              BitBlt(Data.Canvas.Handle, VisibleR.Right, 0,
                Data.Width - VisibleR.Right, Data.Height,
                Data.SrcBmp.Canvas.Handle, 0, 0, cmSrcCopy);
          end
          else
            StretchBlt(Data.Canvas.Handle, VisibleR.Right, 0,
              Data.Width - VisibleR.Right, Data.Height,
              Data.SrcBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height,
              cmSrcCopy);
          Data.UpdateRect := Rect(VisibleR.Right, 0, Data.Width, Data.Height);
          if Mode = 37
          then
          begin
            StretchBlt(Data.Canvas.Handle, 0, 0, VisibleR.Right, Data.Height,
              Data.DstBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height,
              cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(0, 0, VisibleR.Right, Data.Height));
          end
          else
          begin
            BitBlt(Data.Canvas.Handle, VisibleOldR.Right, 0, Step, Data.Height,
              Data.DstBmp.Canvas.Handle, VisibleOldR.Right, 0, cmSrcCopy);
            UnionRect(Data.UpdateRect, Data.UpdateRect,
              Rect(VisibleOldR.Right, 0, VisibleOldR.Right + Step, Data.Height));
          end;
        end;
    38,
    39: begin;
          VisibleR.Right :=
            Data.Width - Round((Data.Width / (Data.Frames + 1)) * CurrentFrame);
          VisibleR.Top   := Round((Data.Height / (Data.Frames + 1)) * CurrentFrame);
          xDesp := VisibleR.Right - VisibleOldR.Right;
          yDesp := VisibleR.Top   - VisibleOldR.Top;
          if Mode = 38
          then
          begin
            if DoScroll
            then
              ScrollDC(Data.Canvas.Handle, xDesp, yDesp, VisibleOldR, ClipR, 0,
                nil)
            else
            begin
              Dec(DstXDesp, xDesp);
              BitBlt(Data.Canvas.Handle, 0, VisibleR.Top, VisibleR.Right,
                Data.Height - VisibleR.Top, Data.SrcBmp.Canvas.Handle,
                DstXDesp, 0, cmSrcCopy);
            end;
          end
          else
            StretchBlt(Data.Canvas.Handle, 0, VisibleR.Top, VisibleR.Right,
              Data.Height - VisibleR.Top, Data.SrcBmp.Canvas.Handle, 0, 0,
              Data.Width, Data.Height, cmSrcCopy);
          Data.UpdateRect := Rect(0, VisibleR.Top, VisibleR.Right, Data.Height);
          BitBlt(Data.Canvas.Handle, 0, VisibleOldR.Top, VisibleOldR.Right, yDesp,
            Data.DstBmp.Canvas.Handle, 0, VisibleOldR.Top, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(0, VisibleOldR.Top, VisibleOldR.Right, VisibleOldR.Top + yDesp));
          BitBlt(Data.Canvas.Handle, VisibleR.Right, VisibleR.Top, -xDesp,
            VisibleR.Bottom - VisibleR.Top, Data.DstBmp.Canvas.Handle,
            VisibleR.Right, VisibleR.Top, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleR.Right, VisibleR.Top, VisibleR.Right - xDesp, VisibleR.Bottom));
        end;
    40,
    41: begin;
          VisibleR.Left := Round((Data.Width  / (Data.Frames + 1)) * CurrentFrame);
          VisibleR.Top  := Round((Data.Height / (Data.Frames + 1)) * CurrentFrame);
          xDesp := VisibleR.Left - VisibleOldR.Left;
          yDesp := VisibleR.Top  - VisibleOldR.Top;
          if Mode = 40
          then
          begin
            if DoScroll
            then
              ScrollDC(Data.Canvas.Handle, xDesp, yDesp, VisibleOldR, ClipR, 0,
                nil)
            else
              BitBlt(Data.Canvas.Handle, VisibleR.Left, VisibleR.Top,
                Data.Width - VisibleR.Left, Data.Height - VisibleR.Top,
                Data.SrcBmp.Canvas.Handle, 0, 0, cmSrcCopy);
          end
          else
            StretchBlt(Data.Canvas.Handle, VisibleR.Left, VisibleR.Top,
              Data.Width - VisibleR.Left, Data.Height - VisibleR.Top,
              Data.SrcBmp.Canvas.Handle, 0, 0, Data.Width,
              Data.Height, cmSrcCopy);
          Data.UpdateRect := Rect(VisibleR.Left, VisibleR.Top, Data.Width,
            Data.Height);
          BitBlt(Data.Canvas.Handle, VisibleOldR.Left, VisibleOldR.Top,
            Data.Width - VisibleOldR.Left, yDesp, Data.DstBmp.Canvas.Handle,
            VisibleOldR.Left, VisibleOldR.Top, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleOldR.Left, VisibleOldR.Top, Data.Width, VisibleOldR.Top + yDesp));
          BitBlt(Data.Canvas.Handle, VisibleOldR.Left, VisibleOldR.Top, xDesp,
            Data.Height - VisibleOldR.Top, Data.DstBmp.Canvas.Handle,
            VisibleOldR.Left, VisibleOldR.Top, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleOldR.Left, VisibleOldR.Top, VisibleOldR.Left + xDesp, Data.Height));
        end;
    42,
    43: begin;
          VisibleR.Right  :=
            Data.Width  - Round((Data.Width / (Data.Frames + 1)) * CurrentFrame);
          VisibleR.Bottom :=
            Data.Height - Round((Data.Height / (Data.Frames + 1)) * CurrentFrame);
          xDesp := VisibleR.Right  - VisibleOldR.Right;
          yDesp := VisibleR.Bottom - VisibleOldR.Bottom;
          if Mode = 42
          then
          begin
            if DoScroll
            then
              ScrollDC(Data.Canvas.Handle, xDesp, yDesp, VisibleOldR, ClipR, 0,
                nil)
            else
            begin
              Dec(DstXDesp, xDesp);
              Dec(DstYDesp, yDesp);
              BitBlt(Data.Canvas.Handle, 0, 0, VisibleR.Right, VisibleR.Bottom,
                Data.SrcBmp.Canvas.Handle, DstXDesp, DstYDesp, cmSrcCopy);
            end;
          end
          else
            StretchBlt(Data.Canvas.Handle, 0, 0, VisibleR.Right,
              VisibleR.Bottom, Data.SrcBmp.Canvas.Handle, 0, 0, Data.Width,
              Data.Height, cmSrcCopy);
          Data.UpdateRect := Rect(0, 0, VisibleR.Right, VisibleR.Bottom);
          BitBlt(Data.Canvas.Handle, 0, VisibleR.Bottom, VisibleOldR.Right, -yDesp,
            Data.DstBmp.Canvas.Handle, 0, VisibleR.Bottom, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(0, VisibleR.Bottom, VisibleOldR.Right, VisibleR.Bottom - yDesp));
          BitBlt(Data.Canvas.Handle, VisibleR.Right, 0, -xDesp, VisibleR.Bottom,
            Data.DstBmp.Canvas.Handle, VisibleR.Right, 0, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleR.Right, 0, VisibleR.Right - xDesp, VisibleR.Bottom));
        end;
    44,
    45: begin;
          VisibleR.Left  := Round((Data.Width / (Data.Frames + 1)) * CurrentFrame);
          VisibleR.Bottom :=
            Data.Height - Round((Data.Height / (Data.Frames + 1)) * CurrentFrame);
          xDesp := VisibleR.Left   - VisibleOldR.Left;
          yDesp := VisibleR.Bottom - VisibleOldR.Bottom;
          Dec(DstYDesp, yDesp);
          if Mode = 44
          then
          begin
          if DoScroll
          then
            ScrollDC(Data.Canvas.Handle, xDesp, yDesp, VisibleOldR, ClipR, 0,
              nil)
          else
            BitBlt(Data.Canvas.Handle, VisibleR.Left, 0,
              Data.Width - VisibleR.Left, VisibleR.Bottom,
              Data.SrcBmp.Canvas.Handle, 0, DstYDesp, cmSrcCopy);
          end
          else
            StretchBlt(Data.Canvas.Handle, VisibleR.Left, 0,
              Data.Width - VisibleR.Left, VisibleR.Bottom,
              Data.SrcBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height,
              cmSrcCopy);
          Data.UpdateRect := Rect(VisibleR.Left, 0, Data.Width, VisibleR.Bottom);
          BitBlt(Data.Canvas.Handle, VisibleOldR.Left, VisibleR.Bottom,
            Data.Width - VisibleOldR.Left, -yDesp, Data.DstBmp.Canvas.Handle,
            VisibleOldR.Left, VisibleR.Bottom, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleOldR.Left, VisibleR.Bottom, Data.Width, VisibleR.Bottom - yDesp));
          BitBlt(Data.Canvas.Handle, VisibleOldR.Left, 0, xDesp,
            VisibleR.Bottom, Data.DstBmp.Canvas.Handle, VisibleOldR.Left, 0,
            cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleOldR.Left, 0, VisibleOldR.Left + xDesp, VisibleR.Bottom));
        end;
    46: begin
          with VisibleR do
          begin
            Left   := (Round((Data.Width  / (Data.Frames + 1)) * CurrentFrame)) div 2;
            Top    := (Round((Data.Height / (Data.Frames + 1)) * CurrentFrame)) div 2;
            Right  := Data.Width  - Left;
            Bottom := Data.Height - Top;
          end;
          BitBlt(Data.Canvas.Handle, VisibleOldR.Left, VisibleR.Bottom,
            VisibleOldR.Right - VisibleOldR.Left,
            VisibleOldR.Bottom - VisibleR.Bottom, Data.DstBmp.Canvas.Handle,
            VisibleOldR.Left, VisibleR.Bottom, cmSrcCopy);
          Data.UpdateRect := Rect(VisibleOldR.Left, VisibleR.Bottom,
            VisibleOldR.Right, VisibleOldR.Bottom);
          BitBlt(Data.Canvas.Handle, VisibleOldR.Left, VisibleOldR.Top,
            VisibleOldR.Right - VisibleOldR.Left,
            VisibleR.Top - VisibleOldR.Top, Data.DstBmp.Canvas.Handle,
            VisibleOldR.Left, VisibleOldR.Top, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleOldR.Left, VisibleOldR.Top, VisibleOldR.Right, VisibleR.Top));
          BitBlt(Data.Canvas.Handle, VisibleOldR.Left, VisibleR.Top,
            VisibleR.Left - VisibleOldR.Left, VisibleR.Bottom - VisibleR.Top,
            Data.DstBmp.Canvas.Handle, VisibleOldR.Left, VisibleR.Top,
            cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleOldR.Left, VisibleR.Top, VisibleR.Left, VisibleR.Bottom));
          BitBlt(Data.Canvas.Handle, VisibleR.Right, VisibleR.Top,
            VisibleOldR.Right - VisibleR.Right, VisibleR.Bottom - VisibleR.Top,
            Data.DstBmp.Canvas.Handle, VisibleR.Right, VisibleR.Top, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect,
            Rect(VisibleR.Right, VisibleR.Top, VisibleOldR.Right, VisibleR.Bottom));
          StretchBlt(Data.Canvas.Handle, VisibleR.Left, VisibleR.Top,
            VisibleR.Right - VisibleR.Left, VisibleR.Bottom - VisibleR.Top,
            Data.SrcBmp.Canvas.Handle, 0, 0, Data.Width, Data.Height, cmSrcCopy);
          UnionRect(Data.UpdateRect, Data.UpdateRect, VisibleR);
        end;
  end;
end;

function TSlideTransition.GetInfo(Device: TTETransitionDevice):
  TTETransitionInfo;
begin
  Result := inherited GetInfo(Device) +
    [
      tetiMillisecondsCapable,
      tetiOffScreenBmpCapable,
      tetiThreadSafe
    ];
end;

initialization

  TERegisterTransition(TSlideTransition);

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -