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

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


Category

  ±è¿µ´ë(2003-03-07 20:57:41, Hit : 4852, 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.





411   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] À©µµ¿ìÁî ¸Þ¸ðÀåÀÇ ÆíÁý³»¿ëÀ» °¡Á®¿À±â  ±è¿µ´ë 2003/03/07 3997 1092
410   [À©µµ¿ìÁî API] À©µµ¿ìÁî"½ÃÀÛ" ¹öư Disable/Enable  ±è¿µ´ë 2003/03/07 4545 1210
409   [À©µµ¿ìÁî API] TaskBarÀÇ ´Ù¾çÇÑ ±â´ÉÁ¦¾î  ±è¿µ´ë 2003/03/07 5250 3432
408   [½Ã½ºÅÛ] À©µµ¿ìÁî ÀüüÀÇ Å°º¸µå ÀÔ·Â ±ÝÁö  ±è¿µ´ë 2003/03/07 4576 1224
407   [µ¥ÀÌÅͺ£À̽º] SQL½ÇÇà½ÃÀÇ ¸ð·¡½Ã°è¸¦ Ç¥½ÃÇÏÁö ¾Ê´Â ¹æ¹ý  ±è¿µ´ë 2003/03/07 4665 1154
406   [À©µµ¿ìÁî API] Ä¿¼­(ÄÉ·µ)ÀÇ ±ô¹ÚÀÓ ¼Óµµ¸¦ º¯°æÇÏ±â  ±è¿µ´ë 2003/03/07 4820 1269
405   [µ¥ÀÌÅͺ£À̽º] µ¥ÀÌŸº£À̽º ·Î±×ÀÎ(login) È­¸é ¶ç¿ì±â  ±è¿µ´ë 2003/03/07 4102 1030
404   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] °£´ÜÈ÷ È­¸é ÇϵåÄ«ÇÇ(snapshot) ÇÏ±â  ±è¿µ´ë 2003/03/07 4787 1149
403   [À©µµ¿ìÁî API] ½ºÅ©¸° ¼¼À̹öÀÇ ±âµ¿½Ã°£ ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 4317 1309
402   [½Ã½ºÅÛ] Æú´õÀÇ º¯°æ¿©ºÎ¸¦ °¨½ÃÇÏ±â  ±è¿µ´ë 2003/03/07 5773 1285
401   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Àü°¢¹®ÀÚÀÎÁö ¹Ý°¢¹®ÀÚÀÎÁö °Ë»çÇÏ±â  ±è¿µ´ë 2003/03/07 6738 1259
400   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ¹®ÀÚ¿­ÀÇ ¹ÙÀÌÆ®¼ö°¡ ¾Æ´Ñ ½ÇÁ¦ ±ÛÀÚ¼ö ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 5014 1142
399   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÀÓ½ÃÆÄÀϸí ÀÚµ¿À¸·Î »ý¼ºÇÏ±â  ±è¿µ´ë 2003/03/07 5213 1664
398   [µ¥ÀÌÅͺ£À̽º] DBGridÀÇ ¼öÁ÷À̵¿ ¸·´ë °¨Ãß±â  ±è¿µ´ë 2003/03/07 4822 1235
397   [½Ã½ºÅÛ] ÇÁ¸°ÅÍ ¸®½ºÆ®¸¦ ±¸ÇÏ¿© ±âº» ÇÁ¸°ÅÍ º¯°æÇÏ±â  ±è¿µ´ë 2003/03/07 13180 1289
396   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ŸÀÌÆ²¹Ù Ŭ¸¯½Ã »ç¿ëÀÚ ÆË¾÷¸Þ´º º¸ÀÌ±â  ±è¿µ´ë 2003/03/07 4895 1178
395   [À©µµ¿ìÁî API] ÆûÀ» ÃÖÇÏÀ§(?)·Î ¼³Á¤ÇÏ±â  ±è¿µ´ë 2003/03/07 4842 1273
394   [½Ã½ºÅÛ] ½Ã½ºÅÛ¿¡ µî·ÏµÈ ÇÑ±ÛÆùÆ®ÀÇ ¸®½ºÆ®  ±è¿µ´ë 2003/03/07 5259 1547
393   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] StringGrid ÀÇ BeginUpdate/EndUpdate ?  ±è¿µ´ë 2003/03/07 5469 1171
392   [À©µµ¿ìÁî API] ¹ÙÅÁÈ­¸é ¾ÆÀÌÄÜÀÇ ±ÛÀÚ»ö ¹Ù²Ù±â  ±è¿µ´ë 2003/03/07 5147 1300
391   [À©µµ¿ìÁî API] ½ºÅ©¸° ¼¼À̹ö ºñ¹Ð¹øÈ£ ¾Ë¾Æ³»±â  ±è¿µ´ë 2003/03/07 4891 1203
390   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ÆÄÀÏ¿¡¼­ ƯÁ¤ Byte ¸ðµÎ ã±â  ±è¿µ´ë 2003/03/07 4519 1156
389   [³×Æ®¿÷/ÀÎÅͳÝ] Network Adaptor °¡ ¿©·¯°³ÀÎ °æ¿ìÀÇ IP ±¸ÇÏ±â  ±è¿µ´ë 2003/03/07 6259 1569
388   [½Ã½ºÅÛ] ÇÁ¸°Æ® ½ºÇ®·¯ Á¦¾î¹æ¹ý  ±è¿µ´ë 2003/03/07 6584 1882
387   [À©µµ¿ìÁî API] ¹ÙÅÁÈ­¸é ¾ÆÀÌÄÜÀÇ ±ÛÀÚ»ö ¹Ù²Ù±â2  ±è¿µ´ë 2003/03/07 5193 1467
386   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] º£Áê(Bezier) °î¼± ±×¸®±â  ±è¿µ´ë 2003/03/07 4821 1439
385   [À©µµ¿ìÁî API] Á¤ÀǵÇÁö ¾ÊÀº Alt+Ű ÀԷ½à BeepÀ½ Á¦°Å  ±è¿µ´ë 2003/03/07 4368 1230
384   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ºÎȰÀý ´Þ°¿(easter egg) ¹®ÀÚ¿­ ÀÔ·Â¹Þ±â  ±è¿µ´ë 2003/03/07 4792 1154
383   [½Ã½ºÅÛ] Delphi VCL »ç¿ë¾ÈÇϰí ÇÁ·Î±×·¥ ¸¸µé±â  ±è¿µ´ë 2003/03/07 5285 1325
382   [À©µµ¿ìÁî API] CTRL+ALT+DEL ¿¡ ³ªÅ¸³ªÁö ¾Ê´Â ÇÁ·Î±×·¥  ±è¿µ´ë 2003/03/07 5168 1292
  [ÀϹÝ/ÄÄÆ÷³ÍÆ®] º£Áê(Bezier) °î¼± ±×¸®±â2  ±è¿µ´ë 2003/03/07 4852 1155
380   [½Ã½ºÅÛ] Űº¸µå ÀÚµ¿¹Ýº¹Áö¿¬ Àбâ/¼³Á¤  ±è¿µ´ë 2003/03/07 4672 1191
379   [½Ã½ºÅÛ] Űº¸µå ÀÚµ¿¹Ýº¹¼Óµµ Àбâ/¼³Á¤  ±è¿µ´ë 2003/03/07 5454 1491
378   [½Ã½ºÅÛ] À©µµ¿ìÁî ĸ¼ÇÀÇ ³ôÀÌ Àбâ/¼³Á¤  ±è¿µ´ë 2003/03/07 4450 1218
377   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] ListView ÀÇ column header ¿À¸¥ÂÊ¿¡ À̹ÌÁö ³Ö±â  ±è¿µ´ë 2003/03/07 4975 1210
376   [ÀϹÝ/ÄÄÆ÷³ÍÆ®] Delphi 4 Secret Registry Settings  ±è¿µ´ë 2003/03/07 6433 1580
375   [µ¥ÀÌÅͺ£À̽º] Record Lock °Ë»ç  ±è¿µ´ë 2003/03/07 4300 1123
374   [À©µµ¿ìÁî API] Áñ°Üã±â Æú´õÀÇ ÆÄÀÏ¿¡¼­ URL »Ì¾Æ³»±â  ±è¿µ´ë 2003/03/07 5285 1295
373   [½Ã½ºÅÛ] CD-ROMÀÇ º¯°æ¿©ºÎ¸¦ °¨½ÃÇÏ±â  ±è¿µ´ë 2003/03/07 5000 1309
372   [½Ã½ºÅÛ] Locking/ Unlocking floppy driver or CD  ±è¿µ´ë 2003/03/07 4287 1221

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

Copyright 1999-2022 Zeroboard / skin by zero