Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.04.2010, 22:55
guver guver вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 35
Репутация: 10
Стрелка Помогите нарисовать

Помогите нарисовать , такое в дельфи , чтоб в последствии каждое поле я мог заливкой разной залить , то есть стены принтус , пол и тд .

Есть координаты написанные в С#

Код:
protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;

            Pen pen = new Pen(Color.Black);

            g.DrawRectangle(pen, 0, 0, 400, 300);
            g.FillRectangle(Brushes.White, new Rectangle(0, 0, 400, 300));

            #region Стены

            Point[] points = {new Point(0, 5), new Point(0, 295), new Point(100, 215), new Point(100, 75)};
            g.FillPolygon(wall, points); 

            Point[] points2 = {new Point(300, 75), new Point(300, 215), new Point(100, 215), new Point(100, 75), 
                                new Point(150, 75), new Point (150, 160), new Point(250, 160), new Point(250, 110), 
                                new Point(150, 110), new Point(150, 75)};
            g.FillPolygon(wall, points2);

            Point[] points3 = {new Point(300, 215), new Point(350, 255), new Point(350, 85), new Point(400, 55), new Point(400, 5), new Point(300, 75)};
            g.FillPolygon(wall, points3);

            #endregion

            #region Кайма

            Point[] points4 = { new Point(0, 0), new Point(0, 5), new Point(100, 75), new Point(100, 70) };
            g.FillPolygon(kaima, points4);
            Point[] points5 = { new Point(100, 70), new Point(100, 75), new Point(300, 75), new Point(300, 70) };
            g.FillPolygon(kaima, points5);
            Point[] points6 = { new Point(300, 70), new Point(300, 75), new Point(400, 5), new Point(400, 0) };
            g.FillPolygon(kaima, points6);

            #endregion

            #region Плинтус

            Point[] points7 = { new Point(0, 295), new Point(0, 300), new Point(100, 220), new Point(100, 215) };
            g.FillPolygon(plintus, points7);
            Point[] points8 = { new Point(100, 215), new Point(100, 220), new Point(300, 220), new Point(300, 215) };
            g.FillPolygon(plintus, points8);
            Point[] points9 = { new Point(300, 220), new Point(300, 215), new Point(350, 255), new Point(350, 260) };
            g.FillPolygon(plintus, points9);

            #endregion

            #region Потолок

            Point[] points10 = { new Point(0, 0), new Point(400, 0), new Point(300, 70), new Point(100, 70) };
            g.FillPolygon(potolok, points10);

            #endregion

            #region Пол

            Point[] points11 = { new Point(0, 300), new Point(100, 220), new Point(300, 220), new Point(400, 300) };
            g.FillPolygon(pol, points11);

            #endregion

            #region Контуры стен

            g.DrawRectangle(pen, new Rectangle(100, 70, 200, 150));
            g.DrawLine(pen, 0, 0, 100, 70);
            g.DrawLine(pen, 400, 0, 300, 70);
            g.DrawLine(pen, 400, 300, 300, 220);
            g.DrawLine(pen, 0, 300, 100, 220);

            #endregion

            #region Контур двери

            g.DrawLine(pen, 350, 85, 350, 260);
            g.DrawLine(pen, 350, 85, 400, 55);

            #endregion

            #region Контур окна

            g.DrawRectangle(pen, new Rectangle(150, 110, 100, 50));
            g.DrawLine(pen, 183, 110, 183, 160);
            g.DrawLine(pen, 216, 110, 216, 160);

            #endregion

            #region Контур каймы

            g.DrawLine(pen, 0, 5, 100, 75);
            g.DrawLine(pen, 100, 75, 300, 75);
            g.DrawLine(pen, 300, 75, 400, 5);

            #endregion

            #region Контур плинтуса

            g.DrawLine(pen, 0, 295, 100, 215);
            g.DrawLine(pen, 100, 215, 300, 215);
            g.DrawLine(pen, 300, 215, 350, 255);

            #endregion            

            #region Длины

            g.DrawString("1.5", new Font("Arial", 8), Brushes.Black, 193, 95);
            g.DrawString("1", new Font("Arial", 8), Brushes.Black, 137, 130);
            g.DrawString("2", new Font("Arial", 8), Brushes.Black, 337, 145);
            g.DrawString("1", new Font("Arial", 8), Brushes.Black, 367, 54);
            g.DrawString("5", new Font("Arial", 8), Brushes.Black, 60, 255);
            g.DrawString("3", new Font("Arial", 8), Brushes.Black, 193, 200);
            g.DrawString("2.5", new Font("Arial", 8), Brushes.Black, 100, 150);

Надо такое же но на дельфи может хоть кусочек скажите а я дальше сам ) или спрошу еще че не пойму
Изображения
Тип файла: jpg 1.jpg (25.2 Кбайт, 18 просмотров)

Последний раз редактировалось guver, 28.04.2010 в 23:00.
Ответить с цитированием
  #2  
Старый 29.04.2010, 08:56
guver guver вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 35
Репутация: 10
По умолчанию

ап все еще нужен хелп )
Ответить с цитированием
  #3  
Старый 29.04.2010, 10:23
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от guver
ап все еще нужен хелп )
Вместо Graphics = TCanvas
линии рисуются так
Код:
MoveTo(10,10);
LineTo(100,100);
в общем посмотрите процедуры класса TCanvas (модуль Graphics)
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #4  
Старый 29.04.2010, 11:18
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну вот я вам начал, пока не уперся в непонятку:
Код:
 
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Pen.Color := clBlack;
 Canvas.Brush.Color := clWhite;
 Canvas.Rectangle(0, 0, 400, 300);
 Canvas.Polygon([Point(0, 5),Point(0, 295),Point(100, 215),Point(100, 75)]);
 Canvas.Polygon([Point(300, 75),Point(300, 215),Point(100, 215),Point(100, 75),
                 Point(150, 75),Point (150, 160),Point(250, 160),Point(250, 110),
                 Point(150, 110),Point(150, 75)]);
 Canvas.Polygon([Point(300, 215),Point(350, 255),Point(350, 85),Point(400, 55),
                 Point(400, 5),Point(300, 75)]);
 Canvas.Polygon([Point(0, 0),Point(0, 5),Point(100, 75),Point(100, 70)]);
 Canvas.Polygon([Point(100, 70),Point(100, 75),Point(300, 75),Point(300, 70)]);
 Canvas.Polygon([Point(300, 70),Point(300, 75),Point(400, 5),Point(400, 0)]);
 Canvas.Polygon([Point(0, 295),Point(0, 300),Point(100, 220),Point(100, 215)]);
 Canvas.Polygon([Point(100, 215),Point(100, 220),Point(300, 220),Point(300, 215)]);
 Canvas.Polygon([Point(300, 220),Point(300, 215),Point(350, 255),Point(350, 260)]);
 Canvas.Polygon([Point(0, 0),Point(400, 0),Point(300, 70),Point(100, 70)]);
 Canvas.Polygon([Point(0, 300),Point(100, 220),Point(300, 220),Point(400, 300)]);
end;

там у вас дальше идет:

Цитата:
#region Контуры стен

g.DrawRectangle(pen, new Rectangle(100, 70, 200, 150));
А он вообще не в тему.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 29.04.2010 в 11:20.
Ответить с цитированием
  #5  
Старый 29.04.2010, 11:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Да и вместо вашего
Цитата:
g.DrawLine(pen, 0, 0, 100, 70);
Надо писать так:
Код:
 Canvas.MoveTo(0,0); Canvas.LineTo(100, 70);
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 29.04.2010, 11:37
guver guver вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 35
Репутация: 10
По умолчанию

Я наверное совсем тупой )))


но


давайте ссамого начала

типа

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end; .........

спасибо за ответы )))
Ответить с цитированием
  #7  
Старый 29.04.2010, 11:45
guver guver вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 35
Репутация: 10
По умолчанию

Нарисовало все норм кроме окна и дверь куть от края внутырь отходит шя буду еще пробывать )

Страдалец спасибо

А еще теперь вопрос при нажатии на кнопку чтоб мне выводило палитру и закрашивало каждую отдельную областть ?? ) )
Ответить с цитированием
  #8  
Старый 29.04.2010, 11:47
guver guver вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 35
Репутация: 10
По умолчанию

Видать для этого и обознаценны контуры , ведь плинтус стены и тд делятся на разные фигуры а так оди видет может стенку как одну плоскость ? 0_о ))))
Ответить с цитированием
  #9  
Старый 29.04.2010, 19:40
guver guver вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 35
Репутация: 10
По умолчанию

аппп
Ответить с цитированием
  #10  
Старый 29.04.2010, 20:07
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

В чем затык? Не знаете как раскрасить?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:43.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025