怎么得到任意行的面积呀!!(50分)

  • 主题发起人 主题发起人 longjiang
  • 开始时间 开始时间
L

longjiang

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么得到任意行的面积呀!!
 
知道一个点代表的面积, 得到一行的面积, 得于任意行的面积
 
问题一:一个像素点的面积是多少!!!
问题二:我怎么知道这个点就在我所画得不规则图形内
 
问题一:一个像素点的面积是多少!!!
实际长度/像素点数= 像素宽度.

问题二:我怎么知道这个点就在我所画得不规则图形内
根据您要的精度要求, 确定点的精度, 点是最小的计量单位. 即使在不规则区内.
 
用微积分呀
 
计算象素点的宽度
function GetScreenPointHorzWidth: Double;
var
DC: HDC;
begin
DC := GetDC(0);
Result := GetDeviceCaps(DC, HORZSIZE) / GetDeviceCaps(DC, HORZRES);
ReleaseDC(DC, 0);
end;
计算象素点的宽度
function GetScreenPointVertHeight: Double;
var
DC: HDC;
begin
DC := GetDC(0);
Result := GetDeviceCaps(DC, VERTSIZE) / GetDeviceCaps(DC, VERTRES);
ReleaseDC(DC, 0);
end;
一般情况下两者相等。

你的不规则图形的边界点你应该知道吧。这样的话,你可以创建一个RGN
比如你得到边界点的Point数组为BorderPointDynArray(类型为array of TPoint)
这样你就可以创建区域了
procedure CreateRGN(BorderPointDynArray: array of TPoint): HRGN;
begin
Result := CreatePolygonRgn(BorderPointDynArray[0],
Length(BorderPointDynArray), WINDING);
end;

区域创建好了,再用这个函数判断点是否在区域内。
比如此点为 APoint,计算到的区域为 ARGN
Result := PtInRegion(ARGN, APoint.x, APoint.y)
就可判断此点是否在区域内。
 

Similar threads

后退
顶部