Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Вопрос по окружностям и знакам...   Найти похожие ветки 

 
Menel   (2004-08-05 16:13) [0]

У народа помощи прошу...
Есть проблема, не могу выровнять между двумя окружностями
символы обозначающие сектора (Знаки Зодиака), пляшут они эллипсом, может кто поможет...

Понять проблему - достаточно создать на форме Image1 и на кнопку положить следующий обработчик:

procedure TForm1.Button1Click(Sender: TObject);
const zodiac_str: array[0..11] of Char = ("^","_","`","a","b","c","d","e","f","g","h","i");
var
i, x0, y0, x1, y1, xc, yc, r : double;
begin
Image1.canvas.Pen.Color := clRed;
Image1.Canvas.Ellipse(0,0,Image1.Width,Image1.Height);
Image1.Canvas.Ellipse(20,20,Image1.Width-20,Image1.Height-20);
Image1.canvas.Pen.Color := clBlack;

i:=0;
while i<360 do
begin
 r  := i/57.3;
 x0 := Image1.Width/2;
 y0 := Image1.Height/2;
 x1 := (Image1.Width/2)*(1+cos(r));
 y1 := (Image1.Height/2)*(1+sin(r));

 Image1.Canvas.MoveTo(Round(x0), Round(y0));
 Image1.Canvas.LineTo(Round(x1), Round(y1));

 // Здесь нужно, чтобы символы вписались ровно по окружности, внутри
 // красных окружностей,  а не плясали по эллипсу

 xc := Image1.Width/2 +  (Image1.Height/2-10) * cos(r+15/57.3);
 yc := Image1.Height/2 + (Image1.Width/2-10)  * sin(r+15/57.3);

 Image1.canvas.Font.Size := 10;
 Image1.canvas.Font.Color := clBlue;
 Image1.canvas.Font.Name := "WingDings";

 Image1.Canvas.TextOut(Round(xc), Round(yc), zodiac_str[Round(i/30)]);

 i:= i+30;
end;
 Image1.Canvas.Ellipse(30, 30, Image1.Width-30, Image1.Height-30);
 Image1.Canvas.Brush.Style := bsClear;
end;


 
Menel   (2004-08-05 16:43) [1]

Сам решил проблему, во всем виноваты размеры символов (ширина, высота) и перед выводом их нужно было преобразовать.

 tw := Image1.Canvas.TextWidth(zodiac_str[Round(i/30)]);
 th := Image1.Canvas.TextHeight(zodiac_str[Round(i/30)]);
 Image1.Canvas.TextOut(Round(xc-tw/2), Round(yc-th/2), zodiac_str[Round(i/30)]);

...



Страницы: 1 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.042 c
14-1091463326
Cerberus
2004-08-02 20:15
2004.08.22
Linux под Win


1-1091786791
Anton777
2004-08-06 14:06
2004.08.22
версия файла


11-1079638623
nester
2004-03-18 22:37
2004.08.22
Как пользоваться KOLTabControl.


1-1092148967
mikle
2004-08-10 18:42
2004.08.22
Добрый день. Подскажите как у списка


4-1089706055
Ertong
2004-07-13 12:07
2004.08.22
AllocConsole