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

Вниз

RxRichEdit   Найти похожие ветки 

 
Joy   (2005-06-25 10:39) [0]

Скажите пожалуйста, как из  RxRichEdit программно вытащить картинку  и сохранить ее в файл? Как обратиться к одной картинке из нескольких в RxRichEdit? Как отследить положение картинки в тексте?


 
Ученик   (2005-06-26 12:44) [1]

Вариант на С++
http://www.codeguru.com/Cpp/misc/misc/msn/article.php/c3901,

раздел 1. How To Get Image Out of RichEditCtrl (Plus writing to bitmap file):


 
Ученик   (2005-06-26 17:36) [2]

Эксперименты на Delphi


procedure TForm1.Button2Click(Sender: TObject);
const
 IID_IDataObject: TGUID = "{0000010E-0000-0000-C000-000000000046}";
var
 DataObject: IDataObject;
 fm: TFORMATETC;
 i, iObjectCount: Integer;
 MetaFilePict: PMetaFilePict;
 ReObject: TReObject;
 RichEditOle: IRichEditOle;
 stgm: STGMEDIUM;
begin
 if SendMessage(JvRichEdit1.Handle, EM_GETOLEINTERFACE, 0, longint(@RichEditOle)) = 1 then begin
   ReObject.cbStruct := SizeOf(ReObject);
   iObjectCount := RichEditOle.GetObjectCount;
   for i := 0 to iObjectCount - 1 do begin
     Image1.Picture := nil;
     if RichEditOle.GetObject(i, ReObject, REO_GETOBJ_POLEOBJ) = S_OK then begin
       if reObject.oleobj.QueryInterface(IID_IDataObject, DataObject) = S_OK then begin
         fm.cfFormat := CF_BITMAP;
         fm.dwAspect := DVASPECT_CONTENT;
         fm.ptd      := nil;
         fm.lindex   := -1;
         fm.tymed    := TYMED_GDI;
         if DataObject.GetData(fm, stgm) = S_OK then begin
           if stgm.hBitmap <> 0 then try
             Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BITMAP, stgm.hBitmap, 0)
           finally
             DeleteObject(stgm.hBitmap)
           end
         end else begin
           fm.cfFormat := CF_METAFILEPICT;
           fm.tymed    := TYMED_MFPICT;
           if DataObject.GetData(fm, stgm) = S_OK then begin
             Image1.Picture.Bitmap.Width  := Round((ReObject.sizel.cx / 2540) * 96);
             Image1.Picture.Bitmap.Height := Round((ReObject.sizel.cy / 2540) * 96);
             MetaFilePict := GlobalLock(stgm.hMetaFilePict);
             try
               with MetaFilePict^ do
                 if hMF <> 0 then try
                   with Image1.Picture.Bitmap do begin
                     SetMapMode(Canvas.Handle, MM_ANISOTROPIC);
                     SetViewportExtEx(Canvas.Handle, Width, Height, nil);
                     PlayMetaFile(Canvas.Handle, hMF)
                   end
                 finally
                   DeleteMetafile(hMF)
                 end
             finally
               GlobalUnlock(stgm.hMetaFilePict)
             end
           end
         end
       end
     end;
     ShowMessage("Object &#185; " + IntToStr(i + 1))
   end
 end
end;



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

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.073 c
1-1119559059
NewWonder
2005-06-24 00:37
2005.07.18
Пара вопросов о DLL


14-1118919283
0legat0r
2005-06-16 14:54
2005.07.18
Не могу просмотреть архивы форума


3-1118300253
Валерий
2005-06-09 10:57
2005.07.18
Ппосмотр BLOB полей


9-1112788372
Gaiti
2005-04-06 15:52
2005.07.18
Problems with animation


1-1120051972
Tirex
2005-06-29 17:32
2005.07.18
отсутствие Toolbar в Tntcontrols