::: µ¨ÆÄÀÌ Tip&Trick :::

µ¨ÆÄÀÌ Tip&Trick ¼º°Ý¿¡ ¸ÂÁö ¾Ê´Â ±¤°í,ºñ¹æ,Áú¹®ÀÇ ±ÛÀº Áï½Ã »èÁ¦Çϸç
³»¿ëÀ» º¹»çÇÏ¿© »ç¿ëÇÒ °æ¿ì ¹Ýµå½Ã À̰÷(http://www.howto.pe.kr)À» Ãâó·Î ¸í½ÃÇÏ¿© ÁÖ¼¼¿ä


Category

  ±è¿µ´ë(2003-03-07 20:57:41, Hit : 4851, Vote : 1155
 º£Áê(Bezier) °î¼± ±×¸®±â2

// Win95/NT4.0 ºÎÅÍ º£Áê(Bezier) °î¼±À» ±×¸± ¼ö ÀÖ´Â API°¡ Ãß°¡µÇ¾ú½À´Ï´Ù
// ±×·¯³ª, Delphi ÀÇ TCanvas ¿¡¼­´Â Áö¿øµÇÁö ¾Ê½À´Ï´Ù
// ¹°·Ð API ¸¦ Á÷Á¢ È£ÃâÇÏ¸é »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù
// ¾Æ·¡ ¿¹Á¦´Â PolyBezier() API ¸¦ »ç¿ëÇØ Ÿ¿øÀ» ±×¸®´Â ¿¹Á¦ÀÔ´Ï´Ù
// http://home.t-online.de/home/Robert.Rossmair/ellipse.htm ¸¦ Âü°íÇØ º¸¼¼¿ä

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

{
  Ellipse approximation using N Bezier curves.
  Relative approximation error <= (1-cos(Pi/N))3/(54*(1+cos(Pi/N)))
     "           "         "   < 4.25E-6        for N = 8
  X, Y: Center coordinates
  A, B: Half axis lengths
  Angle: Angle in radians
}
procedure DrawEllipse(DC: hDC; X, Y, A, B, Angle: Double);
type
  TFloatPoint = record
    X, Y: Double;
  end;
const
  N = 8;
  Alpha = Pi/N;
  Beta = 0.26521648984; // = 4*(1-cos(Alpha))/(3*sin(Alpha))
var
  P: array[0..N*3] of TFloatPoint;
  Q: array[0..N*3] of TPoint; // N Bezier curves
  SinA, CosA: Double;
  Temp: Double;
  I, J, K: Integer;
begin
  for I := 0 to N-1 do
  begin
    Temp := I * (2*Alpha);
    CosA := cos(Temp);
    SinA := sin(Temp);
    K := I*3;
    if K = 0
      then J := N*3-1
      else J := K-1;
    P[K].X := A * CosA;
    P[K].Y := B * SinA;
    SinA := Beta * A * SinA;
    CosA := Beta * B * CosA;
    P[J].X := P[K].X + SinA;
    P[J].Y := P[K].Y - CosA;
    P[K+1].X := P[K].X - SinA;
    P[K+1].Y := P[K].Y + CosA;
  end;
  P[N*3] := P[0];
  CosA := cos(Angle);
  SinA := sin(Angle);
  for i := Low(P) to High(P) do // Rotate and translate
  begin
    Q[I].X := Round(P[I].X*CosA - P[I].Y*SinA +X);
    Q[I].Y := Round(P[I].X*SinA + P[I].Y*CosA +Y);
  end;

  // Draw ellipse and fill it using the current pen and brush
  BeginPath(DC);
  PolyBezier(DC, Q, High(Q)+1);
  EndPath(DC);
  StrokeAndFillPath(DC);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DrawEllipse(Image1.Canvas.Handle,
              Image1.Width div 2,
              Image1.Height div 2,
              40,
              80,
              20*(Pi/180)); // Angle 20
end;

end.





291   [À©µµ¿ìÁî API] bitmap ÀμâÇϱâ 2  ±è¿µ´ë 2003/03/05 4352 1178
290   [½Ã½ºÅÛ] ¾²·¹µå ³»¿¡¼­ ÆûÀ» »ý¼ºÇغ¸ÀÚ  ±¸Ã¢¹Î 2003/03/14 5599 1177
289   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¸ðµç µå¶óÀ̺ê,µð·ºÅ丮 °Ë»öÇÏ¿© ÆÄÀÏ Ã£±â  ±è¿µ´ë 2003/03/07 4685 1177
288   [À©µµ¿ìÁî API] Application ¿¡ ¹ß»ýÇÏ´Â ¸Þ½ÃÁö ±¸°æÇÏ±â  ±è¿µ´ë 2003/03/05 4652 1176
287   [µ¥ÀÌÅͺ£À̽º] Query.RecordCount = -1  ±è¿µ´ë 2003/03/07 5034 1175
286   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MS-OutLook À¸·Î ¸Þ½ÃÁö º¸³»±â  ±è¿µ´ë 2003/03/07 5101 1175
285   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¹®ÀÚ¿­ÀÇ ³¡¿¡¼­ºÎÅÍ °Ë»öÇÏ´Â Pos() ÇÔ¼ö  ±è¿µ´ë 2003/03/07 5098 1175
284   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListBoxÀÇ È­¸é¿¡ º¸¿©Áö´Â ÃÖ»óÀ§ Item ¹øÈ£  ±è¿µ´ë 2003/03/07 4316 1174
283   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¾²·¹µå¸¦ ÀÌ¿ëÇÑ º¹¼ö Query µ¿½Ã¿¡ ¿­±â  ±è¿µ´ë 2003/03/05 6316 1174
282   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MemoÀÇ ÀÔ·ÂÇà¼ö Á¦ÇÑÇÏ±â  ±è¿µ´ë 2003/03/07 4129 1172
281   [À©µµ¿ìÁî API] bitmap ÀμâÇÏ±â  ±è¿µ´ë 2003/03/05 4526 1172
280   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ÀÇ BeginUpdate/EndUpdate ?  ±è¿µ´ë 2003/03/07 5469 1171
279   [COM/OLE] How to register an OCX  ±è¿µ´ë 2003/03/06 4996 1171
278   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TStringGrid ÀμâÇÏ±â  ±è¿µ´ë 2003/03/07 4783 1170
277   [µ¥ÀÌÅͺ£À̽º] Paradox Å×À̺íÀÌ ±úÁ³À»¶§...  ±è¿µ´ë 2003/03/05 5050 1170
276   [µ¥ÀÌÅͺ£À̽º] ¸î°¡Áö BDE ȯ°æÁ¤º¸ ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 4366 1169
275   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] TRichEdit ¿¡ À­Ã·ÀÚ, ¾Æ·§Ã·ÀÚ ¸¸µé±â  ±è¿µ´ë 2003/03/07 4535 1169
274   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÇϳªÀÇ ÇÁ·Î½ÃÀú,ÇÔ¼ö·Î ´Ù¸¥ ÇÔ¼ö,ÇÁ·Î½ÃÀú¸¦ ó¸®  ±è¿µ´ë 2003/03/05 4009 1169
273   [À©µµ¿ìÁî API] ¹Ù·Î Á÷Àü¿¡ active µÇ¾ú´ø À©µµ¿ì¿Í ÄÜÆ®·Ñ ±¸ÇÏ±â  ±è¿µ´ë 2004/07/24 4629 1168
272     [COM/OLE] [re] PDF ActiveX »ç¿ëÇÏ±â  Ãʺ¸µ¨ÇÇ 2005/07/18 5277 1167
271   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ComboBox¿¡ IEÀÇ URL ÀÔ·Ââ °°Àº ±ÙÁ¢°Ë»ö µÎ±â  ±è¿µ´ë 2003/03/31 4627 1163
270   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¼öÁ÷ ½ºÅ©·ÑÀÌ ¸Ç¸¶Áö¸·À¸·Î À̵¿Çß´ÂÁö °Ë»ç  ±è¿µ´ë 2003/03/07 3943 1162
269   [À©µµ¿ìÁî API] µ¥½ºÅ©Å¾ ¾ÆÀÌÄÜ ÀüºÎ °¨Ãß±â/º¸ÀÌ±â  ±è¿µ´ë 2003/03/07 3940 1162
268   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Ç¥ÁØ ÄÜÆ®·ÑÀÇ ¸î°¡Áö ÇÑ°è  ±è¿µ´ë 2003/03/05 4315 1162
267   [½Ã½ºÅÛ] PC¿¡ ¼³Ä¡µÈ µå¶óÀÌºê ¸ñ·Ï ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 4733 1160
266   [À©µµ¿ìÁî API] "¹®¼­" ¸Þ´º¿¡ ÆÄÀÏÀ» µî·ÏÇÏ°í »èÁ¦ÇÏ±â  ±è¿µ´ë 2003/03/05 4310 1159
265   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Variant º¯¼öÀÇ Type ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/05 4357 1159
264   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] MemoÀÇ Ä¿¼­¸¦ ƯÁ¤ À§Ä¡·Î º¸³½ÈÄ scroll ½ÃŰ±â  ±è¿µ´ë 2003/03/05 4987 1159
263   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÇÁ·Î±×·¥ Á¾·á½Ã µµ¿ò¸» È­¸é ´Ý±â  ±è¿µ´ë 2003/03/05 4219 1159
262   [½Ã½ºÅÛ] ÀÏÁ¤½Ã°£ °æ°ú ÈÄ À©µµ¿ìÁî Á¾·áÇÏ±â  ±è¿µ´ë 2004/08/03 4684 1158
261   [¾Ë°í¸®Áò] ¼ýÀÚ¸¦ KB, MB, GB ´ÜÀ§·Î ȯ»êÇÏ±â  ±è¿µ´ë 2003/11/13 5047 1158
260   [½Ã½ºÅÛ] ÇÁ¸°ÅÍ¿¡ escape Äڵ带 Àü´ÞÇÏ´Â ¹æ¹ý  ±è¿µ´ë 2003/03/06 3921 1158
259   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÆÄÀÏ¿¡¼­ ƯÁ¤ Byte ¸ðµÎ ã±â  ±è¿µ´ë 2003/03/07 4519 1156
258   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ButtonÀÇ Mouse Down/Up Èä³»³»±â  ±è¿µ´ë 2003/03/07 4468 1155
  [ÀϹÝ/ÄÄÆ÷³ÍÆ®] º£Áê(Bezier) °î¼± ±×¸®±â2  ±è¿µ´ë 2003/03/07 4851 1155
256   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ºÎȰÀý ´Þ°¿(easter egg) ¹®ÀÚ¿­ ÀÔ·Â¹Þ±â  ±è¿µ´ë 2003/03/07 4792 1154
255   [µ¥ÀÌÅͺ£À̽º] SQL½ÇÇà½ÃÀÇ ¸ð·¡½Ã°è¸¦ Ç¥½ÃÇÏÁö ¾Ê´Â ¹æ¹ý  ±è¿µ´ë 2003/03/07 4665 1154
254   [À©µµ¿ìÁî API] IEÀÇ ÇöÀç url °¡Á®¿À±â  ±è¿µ´ë 2003/03/07 4602 1154
253   [½Ã½ºÅÛ] Thread »ç¿ëÇÏ±â  ±è¿µ´ë 2003/03/07 4209 1153
252   [½Ã½ºÅÛ] È­¸éº¸È£±â°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 3973 1153

[ÀÌÀü 10°³] [1]..[11][12][13][14][15][16][17] 18 [19][20]..[25] [´ÙÀ½ 10°³]
 

Copyright 1999-2022 Zeroboard / skin by zero