Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2011, 17:46   #1
temeah
 
Регистрация: 24.10.2010
Сообщений: 3
По умолчанию Искажение координат при рисовании многоугольника на канве

Доброго времени суток!

Есть такая проблема: рисую многоугольник функцией polygon на image1.canvas.bitmap, вершины в TPoint задаю сам. В итоге все вершины искажаются, но пропорционально(изображение многоугольника не совпадает с предполагаемым). Приходится искать этот "коэффициент искажения" и множить на него мои начальные координаты. Чем может это быть вызвано?
temeah вне форума Ответить с цитированием
Старый 30.12.2011, 19:28   #2
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

При рисовании явно указывайте канву: не просто Canvas.Draw(), а конкретно Image1.Canvas.Draw(). Возможно, в имадже стоит Stretch=true, это искажает пропорции.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 30.12.2011, 19:51   #3
temeah
 
Регистрация: 24.10.2010
Сообщений: 3
По умолчанию

действительно было Stretch=true, поменял на false - ничего не изменилось. А путь я точно задал:

Код:
procedure TForm1.FormCreate(Sender: TObject);
var AP: array[0..5] of tpoint;
begin
form1.Width:=screen.Width;
form1.Height:=screen.Height;
image1.Width:=screen.Width;
image1.Height:=screen.Width;
  Bitmap:=TBitmap.Create;
  Bitmap.LoadfromFile('main.bmp');

  With Image1.Picture.bitmap do
  Begin
    Width:=Bitmap.Width;
    height:=Bitmap.Height;
    Palette:=Bitmap.Palette;
    Canvas.draw(0,0,bitmap);
    Refresh;
  end;
  AP [0].X := 996 ;    AP [0].Y :=411 ;
  AP [1].X := 1029;    AP [1].Y := 388 ;
  AP [2].X := 1080;    AP [2].Y :=372 ;
  AP [3].X := 1126 ;   AP [3].Y :=430;
  AP [4].X := 1066;    AP [4].Y := 469;
  AP [5].X := 991;     AP [5].Y := 458;
  image1.Canvas.brush.Color:=clred;
  image1.canvas.pen.Color:=clred;
  image1.Canvas.Pen.Width:=5;
  image1.Picture.bitmap.Canvas.Polygon(ap);
  bitmap.Free;
temeah вне форума Ответить с цитированием
Старый 31.12.2011, 10:10   #4
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Код:
procedure TForm2.FormCreate(Sender: TObject);
var
  AP:array[0..5] of TPoint;
begin
  AP[0].X:=996;
  AP[0].Y:=411;

  AP[1].X:=1029;
  AP[1].Y:=388;

  AP[2].X:=1080;
  AP[2].Y:=372;

  AP[3].X:=1126;
  AP[3].Y:=430;

  AP[4].X:=1066;
  AP[4].Y:=469;

  AP[5].X:=991;
  AP[5].Y:=458;

  Image1.Width:=Screen.Width;
  Image1.Height:=Screen.Height;
  with Image1 do
  begin
    Picture.LoadFromFile('D:\main.bmp');
    Canvas.Pen.Color:=clRed;
    Canvas.Brush.Color:=clRed;
    Picture.Bitmap.Canvas.Polygon(AP);
  end;
end;
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 03.01.2012, 01:24   #5
temeah
 
Регистрация: 24.10.2010
Сообщений: 3
По умолчанию

Проблема была в размере фотографии. Она была слишком большая и не помещалась в холст.

Спасибо тем кто помогал.
temeah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Задержка при рисовании viron Помощь студентам 1 18.12.2011 12:00
JQuery UI, как убрать искажение фото при эффекте slide? AlienNation JavaScript, Ajax 0 11.10.2011 01:49
Убрать рамку при рисовании в MS WORD badfilin Microsoft Office Word 2 08.01.2010 12:41
Запоминание координат при перемещении формы Shouldercannon Общие вопросы Delphi 5 21.06.2009 23:11
В Image Transparen = true - тормоза при рисовании lexaltd Мультимедиа в Delphi 0 28.09.2008 16:03