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

Поиск:

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


Шустрый
*


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

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



Здравствуйте
Вот перед компиляцией на любой форме есть сетка(точки на п всей форме), но после компиляции эта сетка исчезает,как сделать так чтобы на оставалась?
Спасибо
PM MAIL   Вверх
_hunter
Дата 4.4.2007, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



самому рисовать. эта сетка только в design-time'е для удобства разработки рисуется.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Sunvas
Дата 4.4.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

Репутация: 2
Всего: 89



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


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Snowy
Дата 4.4.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Альтернативный простой вариант:
Код

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Brush.Color := clGrayText;
  Canvas.Brush.Style := bsCross;
  Canvas.Rectangle(ClientRect);
end;


Добавлено через 40 секунд
Это правда не совсем точечки. Просто для точечек несколько больше кода...
PM MAIL   Вверх
Ragli
Дата 4.4.2007, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

А не подскажешь как можно в ToolBar задать чтоб был только один ряд, просто я перевернул его вертикально,и когда 5-8 кнопок размещаю, то смещается на два ряда вертикальных,как сделать 1 ряд?
Спасибо

PM MAIL   Вверх
Snowy
Дата 4.4.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Модератор: Пожалуйста, один топик - один вопрос.
Не лепи всё в кучу smile 
PM MAIL   Вверх
ivan219
  Дата 4.4.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вот тебе и сетачка smile 
Код

procedure TForm1.FormPaint(Sender: TObject);
const
    Step = 4; // Шаг
var
  X, Y: Integer;
begin
 for X:=0 to ClientWidth do
  for Y:=0 to ClientHeight do
   if (X mod Step = 0) and (Y mod Step = 0) then
    Canvas.Pixels[X,Y]:=clBlack;
end;

PM MAIL ICQ   Вверх
ivan219
  Дата 4.4.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Хотя вот так новерное будет быстрее.
Код

 for X:=0 to ClientWidth do
  if X mod Step = 0 then
   for Y:=0 to ClientHeight do
    if Y mod Step = 0 then
     Canvas.Pixels[X,Y]:=clBlack;


И ещё один вареант smile 
Код

 X:=0;
 While X<=ClientWidth do
  begin
   Y:=0;
   While Y<=ClientHeight do
    begin
     Canvas.Pixels[X,Y]:=clBlack;
     Inc(Y,Step);
    end;
   Inc(X,Step);
  end;

Через ScanLine
Код

procedure TForm1.FormPaint(Sender: TObject);
const
    Step = 5;
var
  bm: TBitmap;
  X, Y: Integer;
  P: PByteArray;
begin
 bm := TBitmap.Create;
 bm.PixelFormat := pf24bit;
 bm.Width := ClientWidth;
 bm.Height := ClientHeight;
 for Y:=0 to ClientHeight-1 do
  if Y mod Step = 0 then
   begin
    P:=bm.ScanLine[Y];
    for X:=0 to ClientWidth-1 do
     if X mod Step = 0 then
      begin
       p^[x*3] := 0;
       p^[x*3+1] := 0;
       p^[x*3+2] := 0;
      end;
   end;
 Canvas.Draw(0, 0, bm);
 bm.Free;
end;


Это сообщение отредактировал(а) ivan219 - 5.4.2007, 00:55
PM MAIL ICQ   Вверх
Snowy
Дата 4.4.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Все варианты медленные.
Быстрее кисти всё равно несделаешь.
А тем более через ScanLines ;-)
PM MAIL   Вверх
ivan219
  Дата 5.4.2007, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Snowy @  4.4.2007,  23:03 Найти цитируемый пост)
Все варианты медленные.Быстрее кисти всё равно несделаешь.А тем более через ScanLines ;-)

А почему?

Это сообщение отредактировал(а) ivan219 - 5.4.2007, 02:48
PM MAIL ICQ   Вверх
Alexeis
Дата 5.4.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



ivan219, Не забывай, для работы ScanLine необходим DIB, работа с которым медленнее чем с DDB, потому, что таким образом не используется аппаратное ускорение видеокарты. А для DDB используется.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 5.4.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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





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


Эксперт
****


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

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



Rennigth, это ты к чему?

Добавлено через 2 минуты и 41 секунду
А, понял. Промахнулся топиком smile Про сетку ниже.
Но вариант тот же - через ScanLines и достаточно медленный.
От такого кода 433-й пень сдохнет нафиг.
PM MAIL   Вверх
Yanis
Дата 5.4.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Snowy @  5.4.2007,  11:27 Найти цитируемый пост)
Rennigth, это ты к чему?

Он видимо ссылку перепутал. В «арсенале» был код для рисования сетки.
http://forum.vingrad.ru/index.php?showtopi...st&p=496254

Добавлено через 1 минуту и 19 секунд
Цитата(Snowy @  5.4.2007,  11:27 Найти цитируемый пост)
Но вариант тот же - через ScanLines и достаточно медленный.

Где там сканлайн то? В упор не вижу.


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


Эксперт
****


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

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



Ну да. Это я перехвалил.
Pexels - самый медленный способ. Даже сканлайны в несколько раз быстрее.
Вам так принципиальны именно точки?
Человеку просто разметка нужна была.

Добавлено через 4 минуты и 30 секунд
Хотите точки. Ради бога. Ловите:
Код

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Rectangle(ClientRect);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Canvas.Brush.Bitmap := TBitmap.Create;
  with Canvas.Brush.Bitmap do
  begin
    Width := 8; Height := 8;
    Canvas.Pixels[7, 7] := clGrayText;
  end;
end;

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.0994 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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