Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизВопрос по окружностям и знакам... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c