![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисуем...
eXPell © (2007-03-13 14:36:00)Вот есть код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i,dop,kol,shag:integer;
begin
form1.Image1.Canvas.Pixels[0,0]:=rgb(length(s),0,length(s));
dop:=2;
kol:=0;
shag:=0;
for i:=0 to 900 do
begin
if kol=200 then
begin
dop:=dop+1;
shag:=0;
kol:=0;
end;
form1.Image1.Canvas.Pixels[shag,dop]:=rgb(i,0,i);
kol:=kol+1;
shag:=shag+1;
end;
end;
рисует на image три линии. когда сохраняю рисунок, то сохраняется и белый фон (так что ли). Подскажите как можно реализовать, что бы рисунок сохранялся только то что нарисовано (т.е. когда его потом в просмотрщике открываешь, чтобы были видны только эти линии)?
ЗЫ. если что я поясню)))
TRUNK (2007-03-13 19:40:00) [1]> [38] eXPell © (13.03.07 19:34)
Это всего лишь означает, что файлы на диске занимают размер, кратный 32 кб,
т.е. даже файл размером 1 байт будет занимать 32 кб. А в остальном - "не парься" :)
eXPell (2007-03-13 19:34:00) [2]
> TRUNK © (13.03.07 19:26) [37]
извини, но это "хорошо", "плохо" или "не парся, все нормально"?
ЗЫ. ну не знаю я таких вещей... позор моей седой голове((( с недавнего времени комп для работы использую, а раньше игры и прочее отвлекающее ПО.
TRUNK (2007-03-13 19:26:00) [3]> [35] eXPell © (13.03.07 18:33)
> единственное смущает почему размер 32 кб на диске? так положено?
Значит твой диск отформатирован с размером кластера 32 кб.
default (2007-03-13 18:39:00) [4]eXPell © (13.03.07 18:33) [35]
да, всякая служебная инфа, на это несмотри
eXPell (2007-03-13 18:33:00) [5]вполне:)
файл с белым фоном:
Размер:255 КБ (261 306 байт)
На диске:256 КБ (262 144 байт)
файл без белого фона:
Размер:4,74 КБ (4 854 байт)
На диске:32,0 КБ (32 768 байт)
единственное смущает почему размер 32 кб на диске? так положено?
default (2007-03-13 18:26:00) [6]ну чё размер нормально уменьшился при сохранении?
eXPell (2007-03-13 18:19:00) [7]все понял. там надо
image3.Picture.Bitmap.Height:=dop;
image3.Picture.Bitmap.Width:=300;
тогда нормально:)
eXPell (2007-03-13 18:11:00) [8]если интересно, то вот так я делаю.
и выше приведенный код для рисования.
этот для прямоугольника.
dop:=strtoint(label1.Caption)+1;
image3.Canvas.CopyMode:=cmSrcCopy;
image3.Canvas.CopyRect(rect(0,0,300,dop),image2.Canvas,rect(0,0,300,dop));
image3.Height:=dop;
image3.Width:=300;
только вот высота и ширина не изменяется((. что опять не так?
default (2007-03-13 17:33:00) [9]eXPell © (13.03.07 17:32) [30]
ууу!
так у тебя есть координаты!
тогда по ним легко найдёшь ограничивающий рисунок прямоугольник....
eXPell (2007-03-13 17:32:00) [10]Нет, рисует в зависимости от введенных пользователем данных. От этих данных зависит цвет точек.
Потом такую полосочку вставляем в ворд, расстягиваем, и отчет готов)).
Но! Таких полосочек может быть уйма, и большой размер (100-200 кб при обороте в минимум 1000 файлов - напряженно хранить). Поэтому я и замарачиваюсь: самое главное что бы только сохранять, а "пустоту" (как правильно было замечено) - убирать. Вот и вся идея и цель.
default (2007-03-13 17:26:00) [11]или у тебя там просто за курсором мыши рисует и всё?
default (2007-03-13 17:24:00) [12]eXPell © (13.03.07 17:20) [27]
а какими примитивами пользователь у тебя может рисовать?
так прямая линия, эллипс и тд?
стирать можно кусками примитивы или только полностью?
то есть в процессе рисования меня интересует сложно-ли будет такой прямоугольник контролировать
eXPell (2007-03-13 17:20:00) [13]
> default © (13.03.07 17:12) [26]
да за рамочку-то я уже знаю - набил на ней себе уже шишек. прямоугольники - думаю.
А вообще "не профессионально будет выглядеть такой подход (рамочка в смысле). За автоматизацию как никак боремся. При меньших манипуляциях пользователя - будет тот же эффект, что и при большом количестве действий со стороны пользователя - тем продукт будет выглядеть предпочтительнее в использовании"))). имхо.
default (2007-03-13 17:12:00) [14]eXPell © (13.03.07 17:03) [25]
слушай я тут подумал может ну нафиг эти прямоугольники
может просто тебе включить возможность в твою программу выделять на рисуемом изображение прямоугольник который нужно сохранить в файл?
знаешь как в пейнте рамочка такая есть потом правой кнопкой щёлкаешь и там есть опция сохранить в файл?
так проще и логичней будет я думаю
eXPell (2007-03-13 17:03:00) [15]
> default © (13.03.07 16:56) [24]
во-во, я тож так сейчас подумал. По пиксельно с 1-го во 2-ой: если rgb пикселя не белый, то копируем, а если белый то останавливаемся. Но сразу проблема: а если в линии рисуемой пользователем (т.е. прогой) попадется белый... все конец идеи.
ЗЫ. над прямоугольниками подумаю))
default (2007-03-13 16:56:00) [16]eXPell © (13.03.07 16:50) [23]
вот смотри, допустим, у тебя есть битмэп на котором юзер рисует свои линии через твою программу
поскольку он рисует через твою программу ты легко можешь вычислясть границы прямоугольниками в пределах которого лежит нарисованное пользователем
в конце рисования создаёшь другой битмэп с размерами этого прямоугольника и туда копируешь прямоугольник из первого битмэпа
второй битмэп и сохраняешь
eXPell (2007-03-13 16:50:00) [17]
> default © (13.03.07 16:48) [21]
какие курсы проходил?)) 5 строк... браво!!!
ага, смысл правильный)))
ЗЫ. извините, что устроил тут понимаешь ли "Поле чудес"))
default (2007-03-13 16:49:00) [18]я просто как в Delphi размерности сократить уже не вспомню...
default (2007-03-13 16:48:00) [19]Сергей М. © (13.03.07 16:45) [20]
ты не понял
картинка нарисованная пользователем его программы должна сохраняться в формате который можно просмотреть не только через его программу
его идея с сокращение размерностей картинки по её содержимому нормальная, кому эти пустоты нужны
накрайняк в любом графическом редакторе их можно добавить
Сергей М. (2007-03-13 16:45:00) [20]
> eXPell © (13.03.07 16:40) [18]
тебе ж сказали уже - файл, хранящий вектор(2D-вектор в твоем случае), займет максимум десяток-другой байт)