Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
5-1142439095
Alex603081
2006-03-15 19:11
2007.04.01
изменение/добавление свойств у стандартных компонентов


3-1168392288
NovaC
2007-01-10 04:24
2007.04.01
dBaseIV & password


2-1173183398
..::KraN::..
2007-03-06 15:16
2007.04.01
*.EXE файл.


2-1173726864
Санёк
2007-03-12 22:14
2007.04.01
Как узнать какой из пунктов выделен в ListBox ?


15-1173439194
Sapos
2007-03-09 14:19
2007.04.01
InterBase





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский