Solved

Convert a MetafilePict recovered from Clipboard to a System.Drawing.Image

Posted on 2004-04-26
6
2,137 Views
Last Modified: 2012-05-04
I need to recover an imagen that y paste from Photoshop for asign it to a PictureBox.Image.

The problem that I have is that the function Clipboard.GetDataObject().GetFormats() returns that the clipboard's data is in DataFormats.MetafilePict format and only in this format, don't support any conversion.

I tried to recover the image with this code:

  if ( Clipboard.GetDataObject().GetDataPresent(DataFormats.MetafilePict ) )
      object o= Clipboard.GetDataObject().GetData(DataFormats.MetafilePict);            

the condition is evaluated to true but the object o is assigned to null.


Anybody can help me.

Sorry for my english.

0
Comment
Question by:enrique_mp
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 4

Expert Comment

by:caner_elci
ID: 10920443
I tried the following code with Photoshop and it worked well:

if( Clipboard.GetDataObject().GetDataPresent( DataFormats.Bitmap ) )
{
      object o = null;
      o = Clipboard.GetDataObject().GetData( DataFormats.Bitmap );
      pictureBox1.Image = (Image)o;
}
0
 
LVL 23

Expert Comment

by:rama_krishna580
ID: 10925899
try this..example code

// if you have any imageobject its ok. but make sure types are compatible which highly matters
Bitmap imageObject = (Bitmap)Image.FromFile(@"C:\Documents and Settings\Administrator\My Documents\My Pictures\man2.gif");

Clipboard.SetDataObject(imageObject,false); // it won't remain on clipboard after application exists
IDataObject iData = Clipboard.GetDataObject(); // get the interface object
bool bDataPresent = iData.GetDataPresent(DataFormats.Bitmap); // check whether data is present

// following is just for reference
System.Drawing.Imaging.BitmapData meta = (System.Drawing.Imaging.BitmapData)iData.GetData(DataFormats.MetafilePict);
// you can use meta on Picture or any other objects , just for reference here.

if ( bDataPresent )
richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap));

R.K
0
 
LVL 23

Expert Comment

by:rama_krishna580
ID: 10925911
You may want to try using the type rather than the data format name. I'm
not sure why, but this seemed to work more reliably for me than using the
formats. The following works when I copy a picture from PowerPoint

Dim objData As DataObject = Clipboard.GetDataObject()

If objData.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
Dim bmp As System.Drawing.Bitmap =
CType(objData.GetData(GetType(System.Drawing.Bitmap)),
System.Drawing.Bitmap)
End If

I'll have to do a little research to find out the prescribed way to convert
the MemoryStream from the clipboard to a MetaFile.


best of luck..

R.K
0
 

Author Comment

by:enrique_mp
ID: 10926491
Thanks for all comments. My problem was the size of the image. The size of the image that I was copy was too big and it sames that the clipboard don't store these datas correctly.

Thanks
0
 

Accepted Solution

by:
ee_ai_construct earned 0 total points
ID: 11757146
PAQed, with points refunded (500)
ee_ai_construct - CS Mod
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question