两个问题:1:本人要在delphi下做一个具有cad简单功能的界面,最主要的就是画出一个工
   程立 面图之后可以缩放。对于和x轴垂直或平行的直线无论怎么缩放对整体图
   形都不影响,但是在画出曲线(如y=sin(x)或y=a(x+c)^2)在缩放的同时会变
   形。如果我按照1:1的方式来画就不会失真。
2:在delphi的窗体以image为平台画一个这样的区域:一个口朝下的抛物线,和
   一个口朝上的半圆,半圆和抛物线的两端连接构成一个闭合区域,该区域以内
   为红色,区域以外为黑色。谁能有一个高效快速的算法?有谁能帮忙给个灵感?
★★★★★★★★★★★★★★
第二个问题尤为重要
★★★★★★★★★★★★★★

解决方案 »

  1.   

    问下第2个问题,你是打算用画曲线的api,还是打算自己画所有的点?画曲线的api的话,里面的算法已经定死了,你只能给参数而已吧。自己画点的话就参照图形学里的曲线画法,要更高率的可以去查下文献和论文。
      

  2.   

    对于第一个问题,使用SetStretchBltMode并将图片的DC设置成STRETCH_HALFTONE可以从某种意义上缓解这个现象,但是对于大图片很耗资源。彻底的解决方法是改变你的绘制策略,使用实时绘制,而不是一次性绘制到Image上,这样你无论怎么缩放都能够获得良好的效果。对于第二个问题,其实很简单。你可以自己计算出一些关键点(当然可能比较多)的坐标。然后用多边形绘制函数一次搞定。
      

  3.   


    第二个好解决
    生成两个图形,再合并成一个区域,
    将DC的绘制区域设置为这个区域,
    然后绘制
    HRGN。。
      

  4.   

    1:本人要在delphi下做一个具有cad简单功能的界面,最主要的就是画出一个工 
          程立   面图之后可以缩放。对于和x轴垂直或平行的直线无论怎么缩放对整体图 
          形都不影响,但是在画出曲线(如y=sin(x)或y=a(x+c)^2)在缩放的同时会变 
          形。如果我按照1:1的方式来画就不会失真。 这个。。是不是有钜齿?
    如果有,用GDI+试试吧,有抗钜齿功能