【Delphi绘图】最近在用Delphi做一个绘图程序,碰到了一些问题,请各位指教!谢谢!

QNE1410 2012-04-26 08:26:45
最近在用Delphi做一个绘图程序,碰到了一些问题,请各位指教!谢谢!

1.让一个窗体隐藏同时显示另一个窗体
WinLaunch.Visible:=False;
//WinLaunch.Hide;
WinMain.ShowModal;
这两种方法都会让任务栏图标也给隐藏,
请问如何解决

2.如何实现顺时针画弧
我的想法是将其等价为一段一段的Line,不过还没试过,不知有没有人做过,效果如何?如果有源码共享那就更加感谢了。

3.能不能变换坐标系,将坐标原点定于某一点,坐标值度量单位长度可以自定义?如何实现?

4.在网上找到了SGraph组件,不过在XE2下安装时却报错
[DCC Error] sgr_def.pas(720): E2089 Invalid typecast
--------------------
--------------------
Tsp_ShiftKeys=set of (ssShift, ssAlt, ssCtrl);

fZoomShift: TShiftState;

procedure Tsp_XYPlot.SetZoomShift(const V:Tsp_ShiftKeys);
begin
fZoomShift:=[ssLeft]+TShiftState(V);
end;
在CSDN上找到同样的问题,说用不同的定义,然后 case... of,具体是什么意思呢?

5.
nIdx, nOfs: integer;
aScnLnBuffer: PChar;
aScanLine: PByteArray;
Byte(aScnLnBuffer[nOfs + i]) := aScanLine[nIdx + i];
这段代码在XE2运行时出错
E2064 Left side cannot be assigned to
请问如何解决?

6.请问如何用Ctrl+滚轮实现Image的动态缩放功能?
...全文
434 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
QNE1410 2012-05-17
  • 打赏
  • 举报
回复
明白了
kuangning 2012-05-11
  • 打赏
  • 举报
回复
tpaintbox 作为载体。
鼠标用他的mousemove事件
要用gdi+或者别的东西画,就在他的onpaint事件中操作canvas
kuangning 2012-05-10
  • 打赏
  • 举报
回复
WinMain 窗体中重载CreateParams
procedure CreateParams(var Params: TCreateParams); override;

inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow ;
Params.Style := (Params.Style or WS_MINIMIZEBOX or WS_MAXIMIZEBOX) ;
QNE1410 2012-05-10
  • 打赏
  • 举报
回复
谢谢 kuangning ,解决了一个问题。

这几天忙着复习,今天才考完。看了一下GDI+,能够实现坐标变换,但是没有鼠标移动消息,能否将这两个结合呢?
爱蹄子的羊头 2012-05-04
  • 打赏
  • 举报
回复
WinLaunch 是主窗体么?
QNE1410 2012-05-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

WinLaunch 是主窗体么?
[/Quote]

嗯 对
山东蓝鸟贵薪 2012-05-03
  • 打赏
  • 举报
回复
水平不够呀,先帮你顶顶帖子吧
QNE1410 2012-05-03
  • 打赏
  • 举报
回复
就是捕捉鼠标位置,实时的将图形显示出来,逆时针画弧的已经实现了,使用的就是arc函数。以前用VB绘制非圆曲线时就是用小段直线代替画出来的,但是现在要去找回来觉得有点烦,所以想看看能不能直接用现成的。
天涯倦客 2012-05-03
  • 打赏
  • 举报
回复
一般圆弧都是 矢量方式确定的。。

动态画。。。 没神概念的。。
QNE1410 2012-05-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

2.如何实现顺时针画弧
我的想法是将其等价为一段一段的Line,不过还没试过,不知有没有人做过,效果如何?如果有源码共享那就更加感谢了。

用arc 自己看里面的参数怎么填写


如果是做图像处理方面的,而且自己绘图比较频繁 建议你用GDI+ 从画图的效率 图像处理上来说 gdi+比gdi快很多好很多。
简单举例 gdi+画出来的圆 能做到无毛刺
[/Quote]

arc只能实现逆时针画弧,我想要的效果是能够随鼠标移动动态的画弧,所以不能用arc来实现,至少不能简单的实现。
我想做的其实只是一个小的绘图软件,没做到图像处理,GDI+怎么感觉是一个很空泛的词汇呢?
kuangning 2012-04-30
  • 打赏
  • 举报
回复
2.如何实现顺时针画弧
我的想法是将其等价为一段一段的Line,不过还没试过,不知有没有人做过,效果如何?如果有源码共享那就更加感谢了。

用arc 自己看里面的参数怎么填写


如果是做图像处理方面的,而且自己绘图比较频繁 建议你用GDI+ 从画图的效率 图像处理上来说 gdi+比gdi快很多好很多。
简单举例 gdi+画出来的圆 能做到无毛刺
QNE1410 2012-04-30
  • 打赏
  • 举报
回复
终于有人回了,太感谢了。

aScnLnBuffer[nOfs + i] := @aScanLine[nIdx + i];
这个也是不行。

增加的滚动消息具体是什么呢?能否给个思路呢?如果我想以鼠标为焦点进行缩放,应该怎么做?

还有一个数学上的问题:已知两点和半径画弧。根据已知条件,圆心有两个,同时还有优弧和劣弧的区别,如何解决?
YshuuiNew 2012-04-29
  • 打赏
  • 举报
回复
http://hi.baidu.com/yzidan/blog/item/d99156584be40c82800a1816.html
http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=53846
aScnLnBuffer[nOfs + i] := @aScanLine[nIdx + i];试试,无环境,没测试。
增加IMAGE控件鼠标滚动消息。

多问问百度!
QNE1410 2012-04-27
  • 打赏
  • 举报
回复
没人回,自己先顶一个吧。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧