Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизРисуем... Найти похожие ветки
← →
eXPell © (2007-03-13 14:36) [0]Вот есть код:
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 три линии. когда сохраняю рисунок, то сохраняется и белый фон (так что ли). Подскажите как можно реализовать, что бы рисунок сохранялся только то что нарисовано (т.е. когда его потом в просмотрщике открываешь, чтобы были видны только эти линии)?
ЗЫ. если что я поясню)))
← →
Сергей М. © (2007-03-13 15:03) [1]
> когда сохраняю рисунок
> если что я поясню
Уж изволь пояснить)
Бо в твоем коде нет ни намека на "сохранение" ..
← →
eXPell © (2007-03-13 15:23) [2]Сохраняю по стандарту
form1.Image1.Picture.SaveToFile("d:\new_file.jpg");
Но, смысл в том что весит файл (при размере 345*105) = 140 кб, и это-то две полосочки.
Думаю, что убрав этот "белый фон" - размер значительно сократится. Может просто само сохранение не правильно...
← →
Сергей М. © (2007-03-13 15:34) [3]
> весит файл (при размере 345*105) = 140 кб, и это-то две
> полосочки.
А сколько ж ты хотел ?)
В ВМР-формате сохранил - в нем же и получи !)
Никто кроме тебя меры по сжатию изображения мер не предпримет)
← →
eXPell © (2007-03-13 15:42) [4]
> Сергей М. © (13.03.07 15:34) [3]
да нет, Вы чуток не совсем поняли)) (может я коряво обяснил).
В процессе работы программы в image так сказать рисуются эти линии. Но размер самого image несколько больше чем это необходимо (хотя пользователю это удобно - нагляден процесс). Так вот. После отрисовки линий, пользователь сохраяет рисунок. Каким образом сделать что бы сохранились только эти линии?
Т.е. грубо говоря: сохранилась не вся "поверхность" image с размерами 345*105, а получается 300*3 (длина линий 300 пикселей, а "ширина" - 1 пиксель).
ЗЫ. ...плохо объясняю... на курсы надо походить што ли)))
← →
Сергей М. © (2007-03-13 15:44) [5]
> eXPell © (13.03.07 15:42) [4]
Сохраняй вектор)
> на курсы надо походить што ли
Тоже вариант ... ликбез никогда лишним не бывал)
← →
default © (2007-03-13 15:50) [6]метафайл?
← →
eXPell © (2007-03-13 16:08) [7]
> default © (13.03.07 15:50) [6]
метафайл - это изо, построенное на граф. устройстве с помощью спец команд(полигон,ректангл и т.п.)
растровое изо - это произвольное изо.
Правильно я понимаю?
ЗЫ. сейчас попробовал сохранять так form1.Image1.Picture.Metafile.SaveToFile("d:\new_file.gif");
просмотрщик его не открывает. Что не так?
ЗЫЫ. за глупость не ругайте)
← →
default © (2007-03-13 16:11) [8]ээ ты подожди сам я этот метафайл ниразу не использовал:)
← →
Elen © (2007-03-13 16:16) [9]
> form1.Image1.Picture.Metafile.SaveToFile("d:\new_file.gif");
Гы, так ведь не каждый метафайл может открыться, и кстати ты его назови не .gif а .wmf
← →
SlymRO © (2007-03-13 16:16) [10]default © (13.03.07 15:50) [6]
метафайл?
ага... рисуем "попиксельно".. и хде тут объект "вектор"...
eXPell © (13.03.07 16:08) [7]
.gif"
от смены расширения содержимое не меняется :)
← →
Elen © (2007-03-13 16:17) [11]
> от смены расширения содержимое не меняется :)
... но меняется выбор проги-просмотрщика :)
← →
Сергей М. © (2007-03-13 16:18) [12]
> сейчас попробовал сохранять .. gif
> просмотрщик его не открывает. Что не так?
Просмотрщик увидел в файле с ожидаемым (согласно заявленному расширению имени) gif-форматом вовсе не gif-формат
← →
eXPell © (2007-03-13 16:20) [13]
> Elen © (13.03.07 16:16) [9]
да я так сразу и попробовал: дословно "Просмотр не доступен." стандартный просмотрщик говорит.
ЗЫ. И как-то странно: после того как нажал сохранить как метафайл, пикче исчезает...
ЗЫЫ. правда глупо выгляжу((((....
← →
SlymRO © (2007-03-13 16:24) [14]eXPell © (13.03.07 16:20) [13]
На канвасе лежит BMP! БМП - незжатый фотмат... САЖМИ! например в jpg при помощи соотв. компонент
← →
eXPell © (2007-03-13 16:30) [15]
> SlymRO © (13.03.07 16:24) [14]
дык, я ж не за размером (кб, мб) гонюсь-то, а за размеры (ширина и высота). получив соответствующую ширину*высоту и сжимать то не надо))), т.к. файл с шириной 300 пикселей и высотой 3 пикселя - думаю весить будет маловато, и сжатие как таковое тут не понадобится:)
← →
Elen © (2007-03-13 16:33) [16]
> пикче исчезает...
Чего исчезает???
← →
Amoeba © (2007-03-13 16:38) [17]
> eXPell © (13.03.07 16:30) [15]
>
>
> > SlymRO © (13.03.07 16:24) [14]
>
> дык, я ж не за размером (кб, мб) гонюсь-то, а за размеры
> (ширина и высота). получив соответствующую ширину*высоту
> и сжимать то не надо))), т.к. файл с шириной 300 пикселей
> и высотой 3 пикселя - думаю весить будет маловато, и сжатие
> как таковое тут не понадобится:)
>
Орех!!!
← →
eXPell © (2007-03-13 16:40) [18]
> Elen © (13.03.07 16:33) [16]
ну картинка нарисованная.
> Amoeba © (13.03.07 16:38) [17]
высшая степень похвалы. спс. ну лучше по делу б)))
← →
default © (2007-03-13 16:41) [19]Amoeba © (13.03.07 16:38) [17]
а что реально маньше будет весить:)
← →
Сергей М. © (2007-03-13 16:45) [20]
> eXPell © (13.03.07 16:40) [18]
тебе ж сказали уже - файл, хранящий вектор (2D-вектор в твоем случае), займет максимум десяток-другой байт)
← →
default © (2007-03-13 16:48) [21]Сергей М. © (13.03.07 16:45) [20]
ты не понял
картинка нарисованная пользователем его программы должна сохраняться в формате который можно просмотреть не только через его программу
его идея с сокращение размерностей картинки по её содержимому нормальная, кому эти пустоты нужны
накрайняк в любом графическом редакторе их можно добавить
← →
default © (2007-03-13 16:49) [22]я просто как в Delphi размерности сократить уже не вспомню...
← →
eXPell © (2007-03-13 16:50) [23]
> default © (13.03.07 16:48) [21]
какие курсы проходил?)) 5 строк... браво!!!
ага, смысл правильный)))
ЗЫ. извините, что устроил тут понимаешь ли "Поле чудес"))
← →
default © (2007-03-13 16:56) [24]eXPell © (13.03.07 16:50) [23]
вот смотри, допустим, у тебя есть битмэп на котором юзер рисует свои линии через твою программу
поскольку он рисует через твою программу ты легко можешь вычислясть границы прямоугольниками в пределах которого лежит нарисованное пользователем
в конце рисования создаёшь другой битмэп с размерами этого прямоугольника и туда копируешь прямоугольник из первого битмэпа
второй битмэп и сохраняешь
← →
eXPell © (2007-03-13 17:03) [25]
> default © (13.03.07 16:56) [24]
во-во, я тож так сейчас подумал. По пиксельно с 1-го во 2-ой: если rgb пикселя не белый, то копируем, а если белый то останавливаемся. Но сразу проблема: а если в линии рисуемой пользователем (т.е. прогой) попадется белый... все конец идеи.
ЗЫ. над прямоугольниками подумаю))
← →
default © (2007-03-13 17:12) [26]eXPell © (13.03.07 17:03) [25]
слушай я тут подумал может ну нафиг эти прямоугольники
может просто тебе включить возможность в твою программу выделять на рисуемом изображение прямоугольник который нужно сохранить в файл?
знаешь как в пейнте рамочка такая есть потом правой кнопкой щёлкаешь и там есть опция сохранить в файл?
так проще и логичней будет я думаю
← →
eXPell © (2007-03-13 17:20) [27]
> default © (13.03.07 17:12) [26]
да за рамочку-то я уже знаю - набил на ней себе уже шишек. прямоугольники - думаю.
А вообще "не профессионально будет выглядеть такой подход (рамочка в смысле). За автоматизацию как никак боремся. При меньших манипуляциях пользователя - будет тот же эффект, что и при большом количестве действий со стороны пользователя - тем продукт будет выглядеть предпочтительнее в использовании"))). имхо.
← →
default © (2007-03-13 17:24) [28]eXPell © (13.03.07 17:20) [27]
а какими примитивами пользователь у тебя может рисовать?
так прямая линия, эллипс и тд?
стирать можно кусками примитивы или только полностью?
то есть в процессе рисования меня интересует сложно-ли будет такой прямоугольник контролировать
← →
default © (2007-03-13 17:26) [29]или у тебя там просто за курсором мыши рисует и всё?
← →
eXPell © (2007-03-13 17:32) [30]Нет, рисует в зависимости от введенных пользователем данных. От этих данных зависит цвет точек.
Потом такую полосочку вставляем в ворд, расстягиваем, и отчет готов)).
Но! Таких полосочек может быть уйма, и большой размер (100-200 кб при обороте в минимум 1000 файлов - напряженно хранить). Поэтому я и замарачиваюсь: самое главное что бы только сохранять, а "пустоту" (как правильно было замечено) - убирать. Вот и вся идея и цель.
← →
default © (2007-03-13 17:33) [31]eXPell © (13.03.07 17:32) [30]
ууу!
так у тебя есть координаты!
тогда по ним легко найдёшь ограничивающий рисунок прямоугольник....
← →
eXPell © (2007-03-13 18:11) [32]если интересно, то вот так я делаю.
и выше приведенный код для рисования.
этот для прямоугольника.
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;
только вот высота и ширина не изменяется((. что опять не так?
← →
eXPell © (2007-03-13 18:19) [33]все понял. там надо
image3.Picture.Bitmap.Height:=dop;
image3.Picture.Bitmap.Width:=300;
тогда нормально:)
← →
default © (2007-03-13 18:26) [34]ну чё размер нормально уменьшился при сохранении?
← →
eXPell © (2007-03-13 18:33) [35]вполне:)
файл с белым фоном:Размер:255 КБ (261 306 байт)
На диске:256 КБ (262 144 байт)
файл без белого фона:Размер:4,74 КБ (4 854 байт)
На диске:32,0 КБ (32 768 байт)
единственное смущает почему размер 32 кб на диске? так положено?
← →
default © (2007-03-13 18:39) [36]eXPell © (13.03.07 18:33) [35]
да, всякая служебная инфа, на это несмотри
← →
TRUNK © (2007-03-13 19:26) [37]> [35] eXPell © (13.03.07 18:33)
> единственное смущает почему размер 32 кб на диске? так положено?
Значит твой диск отформатирован с размером кластера 32 кб.
← →
eXPell © (2007-03-13 19:34) [38]
> TRUNK © (13.03.07 19:26) [37]
извини, но это "хорошо", "плохо" или "не парся, все нормально"?
ЗЫ. ну не знаю я таких вещей... позор моей седой голове((( с недавнего времени комп для работы использую, а раньше игры и прочее отвлекающее ПО.
← →
TRUNK © (2007-03-13 19:40) [39]> [38] eXPell © (13.03.07 19:34)
Это всего лишь означает, что файлы на диске занимают размер, кратный 32 кб,
т.е. даже файл размером 1 байт будет занимать 32 кб. А в остальном - "не парься" :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.043 c