Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прорисовка в TImage 
:(
    Опции темы
Ripper
Дата 10.12.2006, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: 1
Всего: 23



Никто не поможет по нормальному реализовать одну чтуку. Есть нарисованный домик а нужно чтобы угол крыши менялся.
Я менял координаты точки в зависимости от положения TrackBar но чето никак по нормальному не получается. 
Тупость  smile 
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Image1.Canvas.Brush.Color:=clMaroon;
 Image1.Canvas.Brush.Style:=bsBDiagonal;
 Image1.Canvas.MoveTo(0,0);
 Image1.Canvas.Rectangle(280,280,20,100);
 Image1.Canvas.MoveTo(0,115);
 Image1.Canvas.LineTo(140,10);
 Image1.Canvas.LineTo(300,114);
 Image1.Canvas.Brush.Style:=bsClear;
 Image1.Canvas.Brush.Color:=clWhite;
 Image1.Canvas.Rectangle(70,200,100,170);
 Image1.Canvas.Rectangle(100,170,130,200);
 Image1.Canvas.Rectangle(130,170,70,140);
 Image1.Canvas.Rectangle(200,280,260,150);
 Image1.Canvas.Brush.Color:=clMaroon;
 Image1.Canvas.Brush.Style:=bsBdiagonal;
 Image1.Canvas.FloodFill(150,30,clBlack,fsBorder);
 Image1.Canvas.Brush.Color:=clGray;
 Image1.Canvas.Brush.Style:=bsSolid;
 Image1.Canvas.FloodFill(75,190,clBlack,fsBorder);
 Image1.Canvas.FloodFill(110,190,clBlack,fsBorder);
 Image1.Canvas.FloodFill(80,150,clBlack,fsBorder);
 Image1.Canvas.Brush.Color:=clMaroon;
 Image1.Canvas.Brush.Style:=bsFDiagonal;
 Image1.Canvas.FloodFill(230,270,clBlack,fsBorder);
  Image1.Canvas.Brush.Color:=clNavy;
 Image1.Canvas.Brush.Style:=bsDiagCross;
 Image1.Canvas.FloodFill(1,1,clBlack,fsBorder);
  Image1.Canvas.FloodFill(1,250,clBlack,fsBorder);
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if (key='z') then
  begin
   Image1.Canvas.Brush.Style:=bsSolid;
   Image1.Canvas.Brush.Color:=clYellow;
   Image1.Canvas.FloodFill(75,190,clBlack,fsBorder);
   Image1.Canvas.FloodFill(110,190,clBlack,fsBorder);
   Image1.Canvas.FloodFill(80,150,clBlack,fsBorder);
  end;
 if (key='x') then
  begin
   Image1.Canvas.Brush.Style:=bsSolid;
   Image1.Canvas.Brush.Color:=clGray;
   Image1.Canvas.FloodFill(75,190,clBlack,fsBorder);
   Image1.Canvas.FloodFill(110,190,clBlack,fsBorder);
   Image1.Canvas.FloodFill(80,150,clBlack,fsBorder);
  end;
end;

end.

На форме соответственно TImage, TButton. Что то я не соображу как нормально это все сделать т.е. две линии должны менять координаты но не получается удалить прошлую линию да и ещё эти все заливки сообразить
брр



--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
anwe
Дата 10.12.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Сохрание предыдущие координаты в переменные. Установи цвет линий и кисти в цвет фона и перерисуй. После расчета новых координат перерисуй снова в нужном (старом) цвете. Координаты опять сохрани в переменные.
PM MAIL   Вверх
Nicholas_S
Дата 10.12.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 // Очищаем TImage, закрашиваем в однотонный цвет
 Image1.Canvas.Brush.Color := clWhite;
 Image1.Canvas.Brush.Style := bsSolid;
 Image1.Canvas.FillRect(Image1.ClientRect);

 Image1.Canvas.Brush.Color:=clMaroon;
 Image1.Canvas.Brush.Style:=bsBDiagonal;
 Image1.Canvas.MoveTo(0,0);
 Image1.Canvas.Rectangle(280,280,20,100);
 Image1.Canvas.MoveTo(0,115);

 // здесб верхняя точка, где соединяются стороны крыши, движется вверх/вниз в зависимости от выбранного значения в трэкбаре
 Image1.Canvas.LineTo(140, trackbar1.position);
 Image1.Canvas.LineTo(300,114);

 Image1.Canvas.Brush.Style:=bsClear;
 Image1.Canvas.Brush.Color:=clWhite;
 Image1.Canvas.Rectangle(70,200,100,170);
 Image1.Canvas.Rectangle(100,170,130,200);
 Image1.Canvas.Rectangle(130,170,70,140);
 Image1.Canvas.Rectangle(200,280,260,150);
 Image1.Canvas.Brush.Color:=clMaroon;
 Image1.Canvas.Brush.Style:=bsBdiagonal;
 Image1.Canvas.FloodFill(150,30,clBlack,fsBorder);
 Image1.Canvas.Brush.Color:=clGray;
 Image1.Canvas.Brush.Style:=bsSolid;
 Image1.Canvas.FloodFill(75,190,clBlack,fsBorder);
 Image1.Canvas.FloodFill(110,190,clBlack,fsBorder);
 Image1.Canvas.FloodFill(80,150,clBlack,fsBorder);
 Image1.Canvas.Brush.Color:=clMaroon;
 Image1.Canvas.Brush.Style:=bsFDiagonal;
 Image1.Canvas.FloodFill(230,270,clBlack,fsBorder);
  Image1.Canvas.Brush.Color:=clNavy;
 Image1.Canvas.Brush.Style:=bsDiagCross;
 Image1.Canvas.FloodFill(1,1,clBlack,fsBorder);
  Image1.Canvas.FloodFill(1,250,clBlack,fsBorder);
end;



--------------------
...все в мире относительно
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.