Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Рисуем...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.045 c
3-1168459764
Kley
2007-01-10 23:09
2007.04.01
Поле в отчете


2-1173713275
FreeZ
2007-03-12 18:27
2007.04.01
Люди, нужна срочно Ваша помощь!


9-1146394032
COMRAD_GREMLIN
2006-04-30 14:47
2007.04.01
проблема с поворотом 2d объекта с текстурой в Opengl


3-1168853695
zdm
2007-01-15 12:34
2007.04.01
График платежей


1-1170688855
Рустам
2007-02-05 18:20
2007.04.01
Перенос приложения на другой компьютер