Witam:)

Jest sobie bitmapka (strona imageshack.us przekształciła go na PNG) :

http://img14.imageshack.us/img14/4308/oryginal.png

Wklejam ten obrazek do dokumentu Word-a 2007, zapisuję dokument do pliku.Zamykam plik.
Otwieram ponownie, zaznaczam wklejony obrazek, klikam ikonkę kopiowania do schowka.
Obrazek trafia do schowka jako metafile.

I teraz chciałbym stworzyć taką procedurę, która przemaluje mi ten obrazek zawarty
w schowku (w formacie metafile) na bitmapę, która będzie można zapisać do pliku BMP.
Użyłem typowej procedury, która to wykonuje:

procedure Metafile_Ze_Schowka_Do_BMP( Path_BMP: TFileName);
var
   MetaFile: TMetafile;
   BMP: TBitmap;
begin
   Metafile:=TMetaFile.Create;
   BMP:=TBitmap.Create;
   try
      BMP.PixelFormat:=pf24bit;

      MetaFile.Assign(Clipboard);

      BMP.Height:=MetaFile.Height;
      BMP.Width:=MetaFile.Width;

     // BMP.Canvas.Draw(0, 0, MetaFile);    //alternatywny sposób  
      PlayEnhMetaFile(BMP.Canvas.Handle, MetaFile.Handle, Rect(0,0, MetaFile.Width, MetaFile.Height));

      BMP.SaveToFile(Path_BMP);
   finally
     BMP.Free;
     MetaFile.Free;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  If Clipboard.HasFormat(CF_METAFILEPICT) then Metafile_Ze_Schowka_Do_BMP( 'c:\obrazek.bmp');
end;


Niestety okazuje się, że rozmiary bitmapy zapisanej do pliku znacznie się różnią od
wymiarów oryginalnego obrazka wstawionego do dokumentu Worda 2007.
Oto jak wygląda taki obrazek (otwarty w Paincie):

http://img38.imageshack.us/img38/9274/zprocedury.png

Widać, że jest znacznie większy.
Co ciekawe, jak skopiuje w Wordzie 2007 obrazek do schowka i bezpośrednio wkleję do Painta,
to obrazek jest niemlże identyczny z oryginałem, pojawiło się tylko niewielkie białe obramowanie
wokół oryginalnej treści obrazka:

http://img514.imageshack.us/img514/2842/wpainciex.png

ale gdyby udało mi się coś takiego uzyskać, to już by było super:

Oznacza to, że istnieje możliwość w miarę wiernego odtworzenia obrazka z zawartości schowka
w formie Metafile'a.

Cała tajemnica tkwi w tym, jak z Metafile'a wydostać oryginalne wymiary bitmapy w nim zawartej,
choć za pomocą podglądu schowka (clipbrd.exe) można zobaczyć, że taka bitmapa matefile'owa
jest w nim rozciągliwa.

Dodam, że obrazki mogą mieć różne rozmiary, więc nie bardzo można przypisać stałych
rozmiarów bitmapy, na której ma być malowany MetaFile.

Może jest jakaś inna metoda wydostania bitmapy w oryginalnych wymiarach z Metafile'a?

Proszę o wskazówki:)

Pzdr.
Marogo