社区
GAME,图形处理/多媒体
帖子详情
谁有画五角星的函数????????????分多多的
wh_mimi
2003-10-16 02:27:15
谁有画五角星的函数????????????分多多的
给定一个中心原点,和五角星的大小
...全文
651
7
打赏
收藏
谁有画五角星的函数????????????分多多的
谁有画五角星的函数????????????分多多的 给定一个中心原点,和五角星的大小
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wantsinewy
2004-03-23
打赏
举报
回复
这个行不?
var
trim: array [0..10, 0..1] of Single;
procedure TNForm.InitTrim;
var
i: Integer;
begin
// 生成一个五角星形状的裁剪曲线,注意:要保证裁剪曲线是封闭的
for i := 0 to 10 do
begin
if Odd(i) then
begin
trim[i,0] := 0.5 * cos(36*i*pi/180) + 0.5;
trim[i,1] := 0.5 * sin(36*i*pi/180) + 0.5;
end
else begin
trim[i,0] := 0.25 * cos(36*i*pi/180) + 0.5;
trim[i,1] := 0.25 * sin(36*i*pi/180) + 0.5;
end;
end;
end;
procedure TNForm.FormPaint(Sender: TObject);
begin
gluBeginTrim(nurb);
// 绘制一个分段线性的曲线用于从曲面上裁剪出一个星形形状来
gluPwlCurve(nurb, 11, @trim, 2, GLU_MAP1_TRIM_2);
gluEndTrim(nurb);
end;
zytangzhou
2004-03-18
打赏
举报
回复
up
Hewin
2003-10-25
打赏
举报
回复
unit StarobjectU;
interface
uses Graphics,Types ;
type
TPoint3 =array[0..2] of Tpoint ;
TPoint5 =array[0..4] of Tpoint ;
TFiveStar = class
private
FBitmap: TBitmap;
FRealOFFSet: Double;
FRadius: Integer;
FColor: TColor;
FgraynessColor : Tcolor ;
FContrast: integer;
FBackColor: TColor;
FLongpoints : TPoint5 ;
FShortpoints : TPoint5 ;
FShortR : Double ;
procedure SetColor(const Value: TColor);
procedure SetOFFSet(const Value: integer);
procedure SetRadius(const Value: Integer);
function GetOffset: integer;
procedure SetContrast(const Value: integer);
procedure ChangegraynessColor ;
procedure SetBackColor(const Value: TColor);
function GetRect: TRect;
function GetCanvas: TCanvas;
public
constructor Create;
destructor Destroy; override;
procedure Draw ;
procedure DrawToCanvas(aCanvas:TCanvas;Center:Tpoint);
procedure SaveToFile(Filename:string);
property Canvas : TCanvas Read GetCanvas;
property BackColor : TColor read FBackColor write SetBackColor;
property Radius : Integer read FRadius write SetRadius;
property OFFSet : integer read GetOffset write SetOFFSet;
property Color : TColor read FColor write SetColor;
property Contrast : integer Read FContrast write SetContrast ;
property ClipRect : TRect Read GetRect ;
end;
implementation
uses color;
{ TFiveStar }
{ TFiveStar }
procedure TFiveStar.ChangegraynessColor;
var
aRGB : TRGBColor ;
aLum : integer ;
begin
aRGB := TRGBColor.Create ;
try
aRGB.Color := FColor ;
aLum :=Round(aRGB.Lum*(1+FContrast/240)) ;
if (aLum >240) then
aRGB.Lum :=240
else
if aLum<0 then
aRGB.Lum := 0
else
aRGB.Lum := aLum ;
FgraynessColor := aRGB.Color ;
finally
aRGB.Free ;
end;
end;
constructor TFiveStar.Create;
begin
inherited ;
FBitmap := TBitmap.Create ;
Fbitmap.Width := 100 ;
Fbitmap.Height := 100 ;
Radius := 50 ;
color := clred ;
Contrast := 50;
end;
destructor TFiveStar.Destroy;
begin
FBitmap.Free ;
inherited;
end;
procedure TFiveStar.Draw;
begin
Canvas.Brush.Color := FBackColor ;
Canvas.FillRect(Canvas.ClipRect);
DrawToCanvas(Canvas,Point(FRadius,FRadius));
end;
procedure TFiveStar.DrawToCanvas(aCanvas: TCanvas; Center: Tpoint);
var
i : integer ;
procedure FullColor(aColor:TColor;p1,p2:Tpoint);
var
aps:TPoint3 ;
begin
aps[0] := Center ;
aps[1] := p1 ;
aps[2] := p2 ;
acanvas.Pen.Color := acolor ;
acanvas.Brush.Color := acolor ;
acanvas.Polygon(aps);
end;
begin
for i := 0 to 4 do
begin
FLongpoints[i].Y :=Center.Y+ Round(sin(FRealOFFSet+i*2*pi/5)*FRadius) ;
FLongpoints[i].x :=Center.x+ Round(Cos(FRealOFFSet+i*2*pi/5)*FRadius) ;
FShortpoints[i].Y :=Center.Y+ Round(sin(FRealOFFSet+pi/5+i*2*pi/5)*FShortR) ;
FShortpoints[i].x :=Center.X+ Round(Cos(FRealOFFSet+pi/5+i*2*pi/5)*FShortR) ;
end;
FullColor(FgraynessColor,FLongpoints[0],FShortpoints[0]);
FullColor(FColor,FLongpoints[1],FShortpoints[0]);
FullColor(FgraynessColor,FLongpoints[1],FShortpoints[1]);
FullColor(FColor,FLongpoints[2],FShortpoints[1]);
FullColor(FgraynessColor,FLongpoints[2],FShortpoints[2]);
FullColor(FColor,FLongpoints[3],FShortpoints[2]);
FullColor(FgraynessColor,FLongpoints[3],FShortpoints[3]);
FullColor(FColor,FLongpoints[4],FShortpoints[3]);
FullColor(FgraynessColor,FLongpoints[4],FShortpoints[4]);
FullColor(FColor,FLongpoints[0],FShortpoints[4]);
end;
function TFiveStar.GetCanvas: TCanvas;
begin
Result := FBitmap.canvas ;
end;
function TFiveStar.GetOffset: integer;
begin
Result :=Round(180*FRealOFFSet/pi)
end;
function TFiveStar.GetRect: TRect;
begin
Result := Rect(0,0,2*FRadius,2*FRadius);
end;
procedure TFiveStar.SaveToFile(Filename: string);
begin
FBitmap.SaveToFile(filename);
end;
procedure TFiveStar.SetBackColor(const Value: TColor);
begin
FBackColor := Value;
end;
procedure TFiveStar.SetColor(const Value: TColor);
begin
FColor := Value;
ChangegraynessColor ;
end;
procedure TFiveStar.SetContrast(const Value: integer);
begin
FContrast := Value ;
ChangegraynessColor ;
end;
procedure TFiveStar.SetOFFSet(const Value: integer);
begin
FRealOFFSet := (Value mod 360)*pi/180 ;
end;
procedure TFiveStar.SetRadius(const Value: Integer);
begin
if FRadius = Value then Exit ;
FRadius := Value;
FShortR := FRadius*(Cos(pi/5))/2 ;
FBitmap.Width := 2*FRadius ;
fbitmap.Height := 2*FRadius ;
end;
end.
其中TRGBColor是我寫的專用來處理顏色的一個類.你可以把ChangegraynessColor方法改一下.
把FColor的R,G,B同時加FContrast得到FgraynessColor
wh_mimi
2003-10-20
打赏
举报
回复
我可以画出这个五角星了,但怎样用指定的颜色填充呢,我现在得到了五个顶点的坐标,上面的几位老大有例子的话发给我好了, wh_mimi@hotmail.com
sixgj
2003-10-16
打赏
举报
回复
一定需要函数画么?
hbqinlei
2003-10-16
打赏
举报
回复
我有个与这相关的例子,要的话我给你发过去!
zytangzhou
2003-10-16
打赏
举报
回复
这好像很简单的呀!用函数就能画出来了!只要自己有时间算一下就可以了!实在不行我帮你写函数!
Excel
函数
100问
初学Excel
函数
你是否总有一种无力感?工作中遇到问题时,不知道用什么
函数
来解决?
函数
的单词都认识,但一用它来写公式,要么写不出来,要么结果不对,更别说编写嵌套公式那些
函数
名称、
函数
参数的作用总是记不住,公式总是编制不对;用Excel多年,还是只会常用的那三五个
函数
。本次课程结合职场工作中遇到的问题,整理100问用
函数
来帮助大家学习Excel
函数
的这些痛点。熟练掌握Excel
函数
的他,总是几
分
钟就能完成,别人倒腾1天的工作量。
python
画
五角星
代码_Python如何使用27行代码绘制星星图
绘制出一个
五角星
之后,就可以通过不断的调用stars
函数
来实现满天星的效果了,详细代码如下 效果展示 接下来让我们将
分
散的代码组合起来,一起看看效果吧 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望...
python用turtle
画
五角星
_使用turtle绘制
五角星
、
分
形树
本文实例为大家
分
享了使用turtle绘制
五角星
和
分
形树的具体代码,供大家参考,具体内容如下turtle 库与之前程序的区别:没有显示的input()与output()没有赋值语句大部
分
语句为.()的形式表示使用中的方法()调用...
python
画
五角星
为什么144度_使用turtle绘制
五角星
、
分
形树
本文实例为大家
分
享了使用turtle绘制
五角星
和
分
形树的具体代码,供大家参考,具体内容如下turtle 库与之前程序的区别:没有显示的input()与output()没有赋值语句大部
分
语句为.()的形式表示使用中的方法()调用...
pythonturtle简易绘图
五角星
_使用turtle绘制
五角星
、
分
形树
导读热词本文实例为大家
分
享了使用turtle绘制
五角星
和
分
形树的具体代码,供大家参考,具体内容如下turtle 库与之前程序的区别:没有显示的input()与output()没有赋值语句大部
分
语句为.()的形式表示使用中的方法()...
GAME,图形处理/多媒体
1,183
社区成员
14,336
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章