Текущий архив: 2005.12.25;
Скачать: CL | DM;
Вниз
Как сохранить созданные в ScrollBoxe компоненты в виде рисунка? Найти похожие ветки
← →
Мастер Ломастер (2005-11-29 03:33) [0]Здравствуйте, уважаемые мастера!
Подскажите пожалуйста как сделать:
1. Я в ScrollBox создаю компоненты (что-то типа структурной схемы, каждый компонент это блок).
2. ScrollBox дописал и теперь у него есть Canvas.
3. Блоки соединяются линиями, которые отрисовываются Canvas (сам понимаю что это извращение, но до другого я пока не додумался, кстати если будет идейка как это можно сделать не используя канву, буду примного благодарен).
4. Есть необходимость сохранять эту структурную схему в виде рисунка. Так вот основной вопрос как это сделать.
Спасибо.
← →
stef © (2005-11-29 04:02) [1]Не знаю поможет или нет, но я в свое время решал похожую задачу так:
поместил на панель имейдж, по formcreate раздвинул границы последнего и с помощью вертикального и горизонтального scrollbar осуществлял позиционирование имейджа на панели отслеживая событие onchange для scrollbar.
Что-то типа этогоprocedure TForm1.ScrollBar1Change(Sender: TObject);
begin
form1.Image1.Left:=-form1.ScrollBar1.Position;
end;
естественно нельзя забывать о свойстве max scrollbar"а.
Тогда все вопросы снимаются сами собой.
← →
ЮЮ © (2005-11-29 04:22) [2]>как это можно сделать не используя канву
рмсовать бех холста? Для того он и предназначен :). Разве только чтобы не делать этого даже когда нет изменений можно нарисовать один раз на Canavas-е с "запоминанием" (TBitmap.Canvas), а в Paint-е копировать с одного Canavas на другой
> Есть необходимость сохранять эту структурную схему в виде рисунка.
Добавить параметр Canvas: TCanavas в параметры процедуры рисования. Теперь можешь рисовать тоже самое где угодно, например на TBitmap.Canvas
Мог бы выслать один проектик для наглядности, если бы не анонимность автора
← →
Мастер Ломастер (2005-11-29 04:31) [3]>> ЮЮ ©
Понятно дело что стрелки линии соединения я могу отрисовать в том же самом TBitmape, но как быть с компонентами...
Что касается отрисовки линий без использования канвы, то я имел ввиду линии ну по типу как в Matlabe (если кто работал), ну или тот же самый Visio.
← →
Мастер Ломастер (2005-11-29 04:33) [4]>> ЮЮ ©
Если не трудно, не могли бы выслать Ваш примерчик.
kalashnikovartem@mail.ru
← →
Васяня (2005-11-29 05:07) [5]
> 4. Есть необходимость сохранять эту структурную схему в
> виде рисунка. Так вот основной вопрос как это сделать.procedure TForm1.GrabScreen;
var
DeskTopDC: HDc;
DeskTopCanvas: TCanvas;
DeskTopRect: TRect;
begin
DeskTopDC := GetWindowDC(ScrollBox1.Handle);
DeskTopCanvas := TCanvas.Create;
DeskTopCanvas.Handle := DeskTopDC;
DeskTopRect := Rect(0, 0, ScrollBox1.Width, ScrollBox1.Height);
Form1.Canvas.CopyRect(DeskTopRect, DeskTopCanvas, DeskTopRect);
ReleaseDC(GetDeskTopWindow, DeskTopDC);
end;
← →
Джо © (2005-11-29 05:31) [6]
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.Width := ScrollBox1.ClientWidth;
Bmp.Height := ScrollBox1.ClientHeight;
ScrollBox1.PaintTo(Bmp.Canvas,0,0);
Bmp.SaveToFile("d:\sample.bmp");
finally
Bmp.Free;
end;
end;
← →
Васяня (2005-11-29 10:18) [7]Джо, а если допустим надо сделать скрин компонента у которого нет PaintTo, тогда остается лупить?
← →
Мастер Ломастер (2005-11-29 12:00) [8]>> Васяня
Большое спасибо, все работает!
← →
Мастер Ломастер (2005-11-29 12:36) [9]Только вот столкнулся с такой бедой, теперь все что находится над ScrollBoxом сохраняется как рисунок, т.е. к примеру у меня Winamp залез на границу ScrollBoxа и сразу же сохранился в файл рисунка, как тут быть?
← →
Джо © (2005-11-29 14:23) [10]
> [7] Васяня (29.11.05 10:18)
> Джо, а если допустим надо сделать скрин компонента у которого
> нет PaintTo, тогда остается лупить?
Кого лупить?
← →
Васяня (2005-11-30 04:30) [11]Мастер Ломастер, а тут делать так как говорит Джо :))
Страницы: 1 вся ветка
Текущий архив: 2005.12.25;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.042 c