Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Вниз

TStrings to TBitmap   Найти похожие ветки 

 
Agent[007]   (2004-01-12 21:30) [0]

У меня есть файл, который я загружаю в TStrings, удаляю пару строк. Как из этого TStrings строки загрузить в TBitmap без создания TEMP(то есть оставшийся TStrings) файлов в процессе работы программы?


 
YuRock   (2004-01-12 21:33) [1]

т.е нарисовать их на битмапе?


 
Юрий Зотов   (2004-01-12 21:45) [2]

Преобразование текста в картинку - это к Дмитрию. В "потрепаться".

А еще лучше - сразу в "орешник".


 
Agent[007]   (2004-01-13 06:30) [3]

2 YuRock:
Ну то есть в TBitmap грузить не весь файл, а его кусок, грубо говоря.


 
Романов Р.В.   (2004-01-13 06:44) [4]

Вопрос обширный. Что конкретно непонятно?


 
REP   (2004-01-13 07:37) [5]

А как загрузить с созданием TEMP?


 
Романов Р.В.   (2004-01-13 08:09) [6]


> REP © (13.01.04 07:37) [5]


Объясняю. Человек нашел процедуру, которая выводит текст из файла на Bitmap. Ему нужно выводить не весь текст. Он удаляет пару строк и записывает все в tmp файл, а затем вызывает известную процедуру.
Так, Agent[007]?


 
REP   (2004-01-13 08:43) [7]

Романов Р.В. © (13.01.04 08:09) [6]
И этот человек ме может посмотреть как работает эта функция? Или это внешняя закрытая функция? Тогда как ему могут подсказать? Никто же не знает как она устроена...
Если эта секретная функция может переводить в Bmp только из файла, то тут уж ничего не поделаешь. :))


 
TUser   (2004-01-13 10:04) [8]

procedure TForm1.Button1Click(Sender: TObject);
var ms:TMemoryStream;
sl:TStringList;
bm:TBitMap;
f:textfile; s:string;
begin
if opendialog1.Execute then begin
ms:=TMemoryStream.Create;
sl:=TStringList.Create;
bm:=TBitMap.Create;
sl.Clear;
assignfile(f,opendialog1.FileName);
reset(f);
while not eof(f) do begin
readln(f,s);
sl.Add(s)
end;
closefile(f);
// sl.LoadFromFile(opendialog1.FileName);
sl.SaveToStream(ms);
ms.Position:=0;
bm.LoadFromStream(ms);
image1.Picture.Assign(bm);
ms.Free; sl.Free; bm.Free;
end;
end;


 
alex_***   (2004-01-13 11:31) [9]

[8] Это что? Шутка?


 
Agent[007]   (2004-01-13 22:10) [10]

Вообщем я хочу сделать свой файл для хранения графических файлов. (самодельный *.res). В начале будет описание и размеры всех файлов, а в битмап надо тока кусок загрузить (заданное число байт).


 
kaif   (2004-01-14 01:38) [11]

Советую посмотреть свойство TBitmap.ScanLine. Это быстрый способ заполнить всю строку битмапа. Итак, создаешь битмап, присваиваешь ему свойства Width и Height. Надеюсь, тебе есть откуда взять их значения. Затем смотришь пример в Help Delphi о том, как работать со свойством ScanLine. В результате понимаешь, как быстро перегнать значения пиксел в битмап построчно.
Что туда перегонять - ты, видимо, знаешь. Иначе не задавал бы вопрос в такой форме.
Свойство TBitmap.Canvas.Pixels[x,y] не используй - это очень медленный способ обращаться к отдельному пикселю.
Правда при чем здесь TStrings, я пока не очень понимаю. TStrings умеет хранить только текст. Если тебе нужен контейнер для чтения res-файла в память, используй вместо TStrings класс TFileStream. Это полоска байтов (поток). Может читать файл, писать файл. Можно разрезать ленту байтов на кусочки и какие-то поместить в TStrings, какие-то в TBitmap. Лучще всего пользоваться для этих целей классами TMemoryStream и методами LoadFromStream, SaveToStream, которые есть и у TStrings и у TBitmap.


 
TUser   (2004-01-14 08:09) [12]

Если действительно очень хочется TString"а - то используй TStringList (см [8]). И вовсе это не шутка - вполне работает.


 
alex_***   (2004-01-14 09:16) [13]

>[12]
у меня на D6 нет. И вообще как-то извращенно выходит. Что ты хотел добиться такими извращениями (читать картинку строками)?
Может я чего-то не понял.


 
TUser   (2004-01-14 09:50) [14]

У меня работает на D7. Согласен, что это получается как-то через непонятно что. Но по сабжу требуется загрузить картинку в память и там отредактировать. Согласен, что лучше это делать через TBitMap, но автор просил через TStrings - ну а зачем именно так, - это уже у него надо спрашивать.


 
alex_***   (2004-01-14 10:00) [15]

Ну он хотел наоборот. Я так понимаю он хотел текст отрисовывать на bmp.


 
TUser   (2004-01-14 10:05) [16]

Он ниписал так
"Вообщем я хочу сделать свой файл для хранения графических файлов. (самодельный *.res). В начале будет описание и размеры всех файлов, а в битмап надо тока кусок загрузить (заданное число байт)."
Если текст отрисовать на битмапе - то, конечно, textout


 
Agent[007]   (2004-01-18 17:34) [17]

Вы не поняли!
У меня есть bmp:
BM6 6 ( Д Д яяяЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂяяяЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂяяяЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ Ђяяя

И я приписываю в начало файла строки с размером и именем.
типа:
822 bytes
a.bmp
BM6 6 ( Д Д яяяЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂяяяЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂяяяяяяяяяяяяяяяяяяЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂЂ ЂяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяяЂ ЂяяяЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ ЂЂ Ђяяя

Как загрузить выделенные строки в bmp без создания файлов в процессе хода работы программы?


 
Palladin   (2004-01-18 19:42) [18]

А ты уверен в корректности выбраного метода при наличии символа #0 в середине данных? Почему строки? Зачем (!) строки? Просто буффер не устраивает?


 
Agent[007]   (2004-01-18 20:27) [19]

2 Palladin

у меня будет несколько битмапов в одном файле и поэтому надо указать в начале их размеры.


 
alex_***   (2004-01-18 21:43) [20]

Выгружаешь данные для bmp в отдельный stream и делаешь для bmp LoadFromStream(stream). Нужно было сразу понятно выражаться.


 
Dima_dvp   (2004-01-18 21:59) [21]

Palladin © (18.01.04 19:42) [18]
Дык #0 это в Си а в Дельфи всё ок - там длина есть


 
Palladin   (2004-01-18 23:17) [22]


> Agent[007] © (18.01.04 20:27) [19]

Ну так указывай кто тебе мешает? Длину цепочки

var
f:file;

BlockWrite(f,DataSize,SizeOf(DataSize));
BlockWrite(f,Data,DataSize);


> Dima_dvp © (18.01.04 21:59) [21]

И что? Читать нестрочные символы в строковую переменную корректно? Просто дин массив не подойдет?

Вы бы еще сметану в ведре из под бензина хранили бы...
В орешник куда же еще...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.008 c
1-93520
hStas32ExA
2004-01-18 17:54
2004.01.29
Компонент


1-93473
hawkins
2004-01-15 18:22
2004.01.29
Не могу изменить обои рабочего стола


14-93677
Teren
2004-01-07 01:59
2004.01.29
Что за файл Thumbs.db


6-93609
Barmutik
2003-11-15 20:30
2004.01.29
Избранное Internet Explorer


14-93630
Zeon
2004-01-02 02:00
2004.01.29
Воксельный редактор





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский