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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TForm 
:(
    Опции темы
Rennigth
Дата 5.4.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 15
Всего: 76



Цитата(Yanis @  5.4.2007,  10:30 Найти цитируемый пост)
Он видимо ссылку перепутал. В «арсенале» был код для рисования сетки.

хм, у меня и твоя и моя ссылка ведет на один и тот же топ Draider-а в арсенале...  smile 

Snowy,  тамже FillRect


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Snowy
Дата 5.4.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Цитата(Rennigth @  5.4.2007,  10:59 Найти цитируемый пост)
хм, у меня и твоя и моя ссылка ведет на один и тот же топ Draider-а в арсенале...
Неа. Ты дал линк на топ выше.

Цитата(Rennigth @  5.4.2007,  10:59 Найти цитируемый пост)
тамже FillRect
А, ну да, ну да. Не дочитал...
Просто много ненужного кода. Да и размещать создание и убийство битмапов в отрисовщике нелогично.
Зачем, если он юзается постоянно... Создал и фсё.
Ну собсна, я уже привёл код, как должно быть smile
PM MAIL   Вверх
Yanis
Дата 5.4.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 6
Всего: 111



Предлагаю вариант от джедаев smile
Я в них почему то уверен.
Код
function DesignRectHeight(const ARect: TRect): Integer;
begin
  Result := ARect.Bottom - ARect.Top;
end;

procedure DesignPaintGrid(ACanvas: TCanvas; const ARect: TRect;
  ABackColor, AGridColor: TColor; ADivPixels: Integer);
var
  b: TBitmap;
  I: Integer;
begin
  b := TBitmap.Create;
  try
    b.Height := DesignRectHeight(ARect);
    b.Width := ADivPixels;
    b.Canvas.Brush.Color := ABackColor;
    b.Canvas.FillRect(Rect(0, 0, b.Width, b.Height));

    I := 0;
    repeat
      b.Canvas.Pixels[0, I] := AGridColor;
      Inc(I, ADivPixels);
    until (I >= b.Height);

    I := ARect.Left;
    repeat
      ACanvas.Draw(I, ARect.Top, b);
      Inc(I, ADivPixels);
    until I >= ARect.Right;
  finally
    b.Free;
  end;
end;


И от меня добавка
Код
procedure TForm1.FormPaint(Sender: TObject);
begin
  DesignPaintGrid(Canvas, ClientRect, clNavy, clWhite, 4);
end;



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 5.4.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Цитата(Yanis @  5.4.2007,  11:48 Найти цитируемый пост)
Я в них почему то уверен.
А я в них давно разочаровался ;-)
И данный код - лишнее тому подтверждение...
PM MAIL   Вверх
ivan219
  Дата 5.4.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Snowy, Твои два кода которые ты при вёл некоректно работают если менять размер формы в Run-Time то получаем бяку smile

Добавлено через 2 минуты и 36 секунд
И ещё я так и непонял как этот код рисует точки
Код

Procedure TForm1.DrawGrid;
Var
  TmpBmp: TBitmap;
Begin
  TmpBmp := TBitmap.Create;
  Try
    With TmpBmp Do
    Begin
      Width := 8;
      Height := 8;
      Canvas.Brush.Color := clBtnFace;
      Canvas.FillRect(TmpBmp.Canvas.ClipRect);
      Canvas.Pixels[0, 0] := clBlack;
      Canvas.Pixels[0, Height] := clBlack;
      Canvas.Pixels[Width, 0] := clBlack;
      Canvas.Pixels[Width, Height] := clBlack;
    End;
    With Canvas, Brush Do
    Begin
      Bitmap := TBitmap.Create;
      Try
        Bitmap.Assign(TmpBmp);
        Canvas.FillRect(Canvas.ClipRect);
      Finally
        Bitmap.Free;
      End;
    End;
  Finally
    TmpBmp.Free;
  End;
End;

может кто разяснит, распишит по подробнее?
PM MAIL ICQ   Вверх
Snowy
Дата 5.4.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Цитата(ivan219 @  5.4.2007,  12:51 Найти цитируемый пост)
Snowy, Твои два кода которые ты при вёл некоректно работают если менять размер формы в Run-Time то получаем бяку
Выбери в инспекторе OnResize.
Нажми галочку выпадающего списка и выбери Form1Paint ;-)
PM MAIL   Вверх
ivan219
  Дата 5.4.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 5
Всего: 12



Цитата(Snowy @  5.4.2007,  13:06 Найти цитируемый пост)
Выбери в инспекторе OnResize.Нажми галочку выпадающего списка и выбери Form1Paint ;-)

Окакая хитрая штука  smile 
PM MAIL ICQ   Вверх
Yanis
Дата 5.4.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 6
Всего: 111



Цитата(Snowy @  5.4.2007,  13:22 Найти цитируемый пост)
И данный код - лишнее тому подтверждение... 

А можно узнать, что конкретно не устраивает?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 5.4.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Цитата(Yanis @  5.4.2007,  14:58 Найти цитируемый пост)
А можно узнать, что конкретно не устраивает?
Ну дык. Практически худший код из предложенных.
Если бы писал студент 1-го курса, то да - это 5 - код работает.
Но, с точки зрения практикующего дельфиста - 2 с плюсом. Плюс за то, что он всё таки работает.
PM MAIL   Вверх
Yanis
Дата 5.4.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 6
Всего: 111



Цитата(Snowy @  5.4.2007,  16:06 Найти цитируемый пост)
Практически худший код из предложенных.

Об этом и вопрос. Мне интересно твоё мнение, что именно там плохо.
По моему работает достаточно быстро.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Snowy
Дата 5.4.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Внешне?
Что быстрее 8000 вызовов SetPixel или один вызов Rectangle?
А при 30 отрисовках в секунду?

Нет, конечно, когда проц за 2 ГГц и других задач нет - только точечки рисовать, то можно и пренебречь такой мелочью, как пара сотен тысяч лишних операций... Главное, чтоб работало  smile
Именно так и рассуждают индийские и китайские программисты smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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