相对于滚动条的绘画
Painting relative to scrollbars
我正在制作一些我自己使用的组件,我正在尝试制作一个“riff 生成器”来制作 midi 格式的曲调。因此,我正在编写钢琴卷轴编辑器(例如在 fl studio 等中)。
我遇到的问题是相对于滚动条位置的绘制。我现在已经试了两天了,但我似乎不知道该怎么做。我已经添加了用于设置滚动位置的变量和程序,但我不明白我如何在滚动时绘制 up/down 和横向。
我添加了目前已有的代码,我正在使用 Erik Bilsen (www.bilsen.com/gdiplus) 的 GDI+ 单元进行绘图。
如果有人可以查看我的代码,并帮助我正确绘制图纸,那就太棒了!完成后我会将这个和其他组件作为开源发布,这样其他人也可以使用这些组件。
组件代码:https://pastebin.com/562yfDvu
FScrollPosX : Integer;
FScrollPosY : Integer;
FScrollMaxX : Integer;
FScrollMaxY : Integer;
FOldScrollX : Integer;
FOldScrollY : Integer;
一些典型的计算
滚动条范围
Given Virtual extent (VirtExt) in pixels
Given Viewport extent (VPExt) in pixels
Scrollbar range = VirtExt - VPExt (to leave the last part visible in the viewport)
具有给定滚动位置的 ViewPort 中的对象位置
Given Object.pos (ObjPos) (in virtual space)
Given Sroll position (ScrPos)
Position in viewport: ObjPos - ScrPos
对象可见性过滤器
Visible if (OPos >= ScrPos) and (OPos < ScrPos+VPExt)
我正在制作一些我自己使用的组件,我正在尝试制作一个“riff 生成器”来制作 midi 格式的曲调。因此,我正在编写钢琴卷轴编辑器(例如在 fl studio 等中)。
我遇到的问题是相对于滚动条位置的绘制。我现在已经试了两天了,但我似乎不知道该怎么做。我已经添加了用于设置滚动位置的变量和程序,但我不明白我如何在滚动时绘制 up/down 和横向。
我添加了目前已有的代码,我正在使用 Erik Bilsen (www.bilsen.com/gdiplus) 的 GDI+ 单元进行绘图。
如果有人可以查看我的代码,并帮助我正确绘制图纸,那就太棒了!完成后我会将这个和其他组件作为开源发布,这样其他人也可以使用这些组件。
组件代码:https://pastebin.com/562yfDvu
FScrollPosX : Integer;
FScrollPosY : Integer;
FScrollMaxX : Integer;
FScrollMaxY : Integer;
FOldScrollX : Integer;
FOldScrollY : Integer;
一些典型的计算
滚动条范围
Given Virtual extent (VirtExt) in pixels
Given Viewport extent (VPExt) in pixels
Scrollbar range = VirtExt - VPExt (to leave the last part visible in the viewport)
具有给定滚动位置的 ViewPort 中的对象位置
Given Object.pos (ObjPos) (in virtual space)
Given Sroll position (ScrPos)
Position in viewport: ObjPos - ScrPos
对象可见性过滤器
Visible if (OPos >= ScrPos) and (OPos < ScrPos+VPExt)