|
Вопрос # 5 518/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты! подскажите пожалуйста как
в изображения добавить ссылочные надписи? Что для этого нужно сделать? Изображения добавлены в TImage.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: Димон (статус: Посетитель)
Вопрос отправлен: 22 июля 2011, 09:47
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 114; последнее сообщение — 25 июля 2011, 07:49; участников в обсуждении: 6.
Страницы: [« Предыдущая] [1] [2] [3] [4] [5] [6] [Следующая »]
|
Димон (статус: Посетитель), 22 июля 2011, 19:01 [#41]:
Ну вот про создание TFile. Как создавать??? Я так понимаю это собственный файл. Я буду создавать файл с расширением *.dpim
Изображение для примера я писал ранее в ссылке. Мне нужно расставить кнопки/ссылки на цифры. И сохранить все в мой файл с новым расширением. Ну и потом открыть уже файл со своим расширением.
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 19:22 [#42]:
Сейчас что-нибудь намучу, просто у меня свой проект кипит не могу много помогать.
Чисти код! Чисти код! Чисти код!
|
|
Димон (статус: Посетитель), 22 июля 2011, 19:27 [#43]:
Gooddy спасибо за поддержку. Если будет минутка для меня, буду чрезвычайно признателен. Сдам дипломку, возьму японку и приеду с Коньяком, отблагодарить
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 20:05 [#44]:
Всё доварил, сейчас свободен.
Итак.
1. Создаём файл-каритнку для иконок. Можно в пейнте можно в шопе. Шоп в любом случае понадобится.

Файл должен быть в формате bmp.
2. Копируем файл и открываем в фотошопе.

3. Создаём новый слой-заливку чёрного цвета ( 000000 ).

4. Теперь рисуем на этом слое области для кнопок (цвет - номер кнопки).
Для того, чтобы кнопки было заметно, можно брать номера 0000FF, 00FF00, FF0000, FFFF00, FF00FF и т.д.
(закрашивать нужно чтобы цвета пикселей на всей кнопке были одинаковые, небольшое отличие (даже невидимое глазу) - и баг).
Для того чтобы видеть кнопки устанавливаем непрозрачность на 50%:

Теперь закрашиваем кнопки. Я закрасил такими цветами: $FF0000, $00FF00, $0000FF.

5. Ставим непрозрачность опять 100% и сохраняем файл:
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 20:23 [#45]:
Дальше нужно будет сделать программу сшивающую эти два файла.
Примерный код такой:
type
TMyRecord = record
Image, Mask: TPicture;
end;
var
MyRecord: TMyRecord;
begin
MyRecord.Image := TPicture.Create;
MyRecord.Image.LoadFromFile('C:\Image.bmp');
MyRecord.Mask := TPicture.Create;
MyRecord.Mask.LoadFromFile('C:\Mask.bmp');
...
MyRecord.Image.Free;
MyRecord.Mask.Free;
И само сохранение (вместо точек):
var
F: file of TMyRecord;
begin
Assign (F,'c:\MyFile.myExt');
Rewrite(F);
Write(F, MyRecord);
Close(F);
end;
Вроде так. После обработки всех пар (изображение, маска) будет множество таких вот файлов-изображений. По идее можно все засунуть в один файл. Но пока проще сделать для нескольких, а переделать - 3 минуты.
Чисти код! Чисти код! Чисти код!
|
|
Димон (статус: Посетитель), 22 июля 2011, 20:52 [#46]:
Урааа. Файл создался, только он почему то в дофига раз меньше, и я теперь не знаю чем его открыть просмотреть и увидеть свои кнопки
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 20:54 [#47]:
Эм. В дофига раз меньше? Это плохо. Нужно проверять. Сейчас эксперты подвалят скажут что как.
Чисти код! Чисти код! Чисти код!
|
|
Димон (статус: Посетитель), 22 июля 2011, 20:56 [#48]:
Ну да одно изображение 2320 КБ, второе 943 КБ а выходной с моим расширением получился 8 б.((( И я не знаю теперь как быть и что делать
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 20:58 [#49]:
Просмотрщик можно тестовый сделать.
F: file of TMyRecord;
MyRec: TMyRecord;
Assign(f, 'c:\file.xxx');
Reset(f);
Read(f, MyRec);
Close(f);
MyRec.Image.SaveToFile('xxx1.bmp');
MyRec.Mask.SaveToFile('xxx2.bmp');
Такой код разобьёт файл на маску и изображение.
Т.е. проведёт обратную процедуру.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 20:59 [#50]:
Блин. Полный код в студию. Буду смотреть.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 21:00 [#51]:
8 байт это очень мало. Возможно TPicture конкретно картинку в себе не хранит, я очень мало с графикой работал.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 21:01 [#52]:
Тогда придётся заменить TPicture на TImage, это конечно не идеально решение, но простое и будет работать.
Чисти код! Чисти код! Чисти код!
|
|
Димон (статус: Посетитель), 22 июля 2011, 21:06 [#53]:
type
TMyRecord=Record
Image, Mask: TPicture;
end;
var
Form1: TForm1;
MyRecord: TMyRecord;
{$R *.dfm}
procedure TForm1.Button1.Click(Sender: TObject)
begin
MyRecord.Image:=TPicture.Create;
MyRecord.Image.LoadFromFile('C:\u101.bmp');
MyRecord.Mask:=TPicture.Create;
MyRecord.Mask.LoadFromFile('C:\test.bmp');
SaveFile;
MyRecord.Image.Free;
MyRecord.Mask.Free;
end;
procedure TForm1.SaveFile;
var
F: file of TMyRecord;
begin
AssignFile(F, 'C:\test.dpim');
Rewrite(F);
Write(F, MyRecord);
CloseFile(F);
end;
|
|
Димон (статус: Посетитель), 22 июля 2011, 21:11 [#54]:
Вы хоть и с графикой не много работаете, зато один из единственных кто пытается помочь, тому кто в этом плане чайник
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 21:55 [#55]:
Странно. Можно так попробовать:
type
TMyRecord=Record
Image, Mask: TImage;
end;
var
Form1: TForm1;
MyRecord: TMyRecord;
{$R *.dfm}
procedure TForm1.Button1.Click(Sender: TObject)
begin
MyRecord.Image:=TImage.Create;
MyRecord.Image.Picture.LoadFromFile('C:\u101.bmp');
MyRecord.Mask:=TImage.Create;
MyRecord.Mask.Picture.LoadFromFile('C:\test.bmp');
SaveFile;
MyRecord.Image.Free;
MyRecord.Mask.Free;
end;
procedure TForm1.SaveFile;
var
F: file of TMyRecord;
begin
AssignFile(F, 'C:\test.dpim');
Rewrite(F);
Write(F, MyRecord);
CloseFile(F);
end;
Могут приплыть толковые эксперты и скажут, что это слишком расточительно, но варианта такой же простоты я прикинуть не могу.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 21:57 [#56]:
Упс. У меня тут возникла мысль. Возможно что сохраняя в файл запись с объектами сохраняются только указатели на них!
Тогда даже с TImage будет выходить файл 8 байт. Если так будет то я уже знаю решение.
Чисти код! Чисти код! Чисти код!
|
|
Димон (статус: Посетитель), 22 июля 2011, 22:01 [#57]:
Когда меняю TPicture на TImage то происходит ошибка, при создании TImage.Create нужно подставлять значение.
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 22:03 [#58]:
Ай точно это же визуальный компонент.
Create(Form1)
Я сейчас разбираюсь как через потоки объекты сохранять. Вроде бы это всё не очень эффективно и придётся сохранять массивы пикселей.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 22:05 [#59]:
Блин. Через потоки только элементарные свойства записываются. Попробую конечно, но по ходу только массивы пикселей...
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 22 июля 2011, 22:05 [#60]:
Либо есть вариант ещё проще. Держать 2 различных файла, не скрепляя. Такое подойдёт?
Чисти код! Чисти код! Чисти код!
|
Страницы: [« Предыдущая] [1] [2] [3] [4] [5] [6] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|