最近在用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的动态缩放功能?

解决方案 »

  1.   

    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控件鼠标滚动消息。多问问百度!
      

  2.   

    终于有人回了,太感谢了。aScnLnBuffer[nOfs + i] := @aScanLine[nIdx + i];
    这个也是不行。增加的滚动消息具体是什么呢?能否给个思路呢?如果我想以鼠标为焦点进行缩放,应该怎么做?还有一个数学上的问题:已知两点和半径画弧。根据已知条件,圆心有两个,同时还有优弧和劣弧的区别,如何解决?
      

  3.   

    2.如何实现顺时针画弧
    我的想法是将其等价为一段一段的Line,不过还没试过,不知有没有人做过,效果如何?如果有源码共享那就更加感谢了。用arc 自己看里面的参数怎么填写
    如果是做图像处理方面的,而且自己绘图比较频繁 建议你用GDI+ 从画图的效率 图像处理上来说 gdi+比gdi快很多好很多。
    简单举例 gdi+画出来的圆 能做到无毛刺
      

  4.   


    arc只能实现逆时针画弧,我想要的效果是能够随鼠标移动动态的画弧,所以不能用arc来实现,至少不能简单的实现。
    我想做的其实只是一个小的绘图软件,没做到图像处理,GDI+怎么感觉是一个很空泛的词汇呢?
      

  5.   

    就是捕捉鼠标位置,实时的将图形显示出来,逆时针画弧的已经实现了,使用的就是arc函数。以前用VB绘制非圆曲线时就是用小段直线代替画出来的,但是现在要去找回来觉得有点烦,所以想看看能不能直接用现成的。
      

  6.   

    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) ;
      

  7.   

    谢谢 kuangning ,解决了一个问题。这几天忙着复习,今天才考完。看了一下GDI+,能够实现坐标变换,但是没有鼠标移动消息,能否将这两个结合呢?
      

  8.   

    tpaintbox 作为载体。
    鼠标用他的mousemove事件
    要用gdi+或者别的东西画,就在他的onpaint事件中操作canvas