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

Вниз

динамическое создание пиктограммы   Найти похожие ветки 

 
skeef   (2010-11-28 11:25) [0]

Стоит задача исходя из данных в строке Excel-таблицы собирать из кусочков изображения готовую пиктограмму и загонять ее в буфер обмена, для последующей вставки уже руками на карту в ксаре (xara - векторный редактор, типа Corel).
Пробовал использовать pngimage - все классно друг на друга накладывается, но библиотека не работает с буфером обмена :( т.е. в клипборд передается обычная bmp-шка и на белом фоне.
(Конечно же пиктограммы круглые :( )
Далее решил попробовать использовать метафайлы. Вроде разобрался, получается такой код (без аналитики экселя):

procedure TForm1.FormCreate(Sender: TObject);
begin
 GetDir(0, ImgPath);
 ImgPath := ImgPath + "\img\";
end;

procedure TForm1.btnCreateClick(Sender: TObject);
var
 pic1, pic2: TMetafile;
 mc : TmetaFileCanvas;

begin
 pic1 := TMetafile.Create;
 pic1.LoadFromFile(ImgPath + "lCircGR.wmf");
 pic2 := TMetafile.Create;
 pic2.LoadFromFile(ImgPath + "sCircB.wmf");

 picRes := TMetafile.Create;
 picRes.Height := 100;
 picRes.Width := 100;
 mc := TMetafileCanvas.Create(picRes, 0);
 mc.Draw(0, 0, pic1);
 mc.Draw(30, 0, pic2);
 mc.Free;
end;

procedure TForm1.btnCBClick(Sender: TObject);
begin
 Clipboard := TClipBoard.Create;
 Clipboard.Assign(picRes);
end;


вроде что-то получается, но есть 2 проблемы:
1. Если я в процедуре btnCreateClick загоняю созданнуб картинку в Clipboard.Assign(picRes); - вылетает ошибка доступа к памяти, поэтому пришлось сделать дополнительно кнопку btnCBClick. Как-то странно
2. Когда я пробовал виндовские метафайлы, те что лежат в офисе, - все классно получалось - в ксару вставляется вектор. Теперь же, когда я начал писать подпрограммы для размещения частей в нужных координатах, сами эти части конвертировал из той-же ксары в .wmf. Получается\ какая-то фигня. Вроде как метафайл, но внутри скорее всего бмп-шка, потому как присутствует фон. :( Наверное криво конвертирует касара (сейчас качаю корел, чтобы убедиться)
Кто что посоветует?
Может есть решение попроще?


 
skeef   (2010-11-28 11:30) [1]

Забыл: Delphi 2010


 
Дмитрий Белькевич   (2010-11-29 10:51) [2]


>  Clipboard := TClipBoard.Create;


Не скажу, насчет глюка, скажу только, что так делать не нужно. Clipboard - глобальный объект, создаётся сам во время доступа к нему.


 
Дмитрий Белькевич   (2010-11-29 10:52) [3]

В этом ксаре, кстати, ole нету случаем? Что бы через буфер не гонять данные?



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

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

Наверх





Память: 0.45 MB
Время: 0.005 c
6-1254724774
matt_
2009-10-05 10:39
2012.04.08
Wi-Fi и прием данных


2-1324044551
Chuck Bass
2011-12-16 18:09
2012.04.08
проверить пуста ли строка


2-1323897006
cyber-pilot
2011-12-15 01:10
2012.04.08
Рисование на канве в заданном прямоугольнике


15-1323102788
Eraser
2011-12-05 20:33
2012.04.08
Какой хостинг посоветуете?


6-1254688951
xarfan
2009-10-05 00:42
2012.04.08
Идентификация пользователей при работе с Сокетами (Delphi)





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