|
A windows metafile is not a raster image, I'd be surprised that you could load it into an Image object. It contains vector information, not a picture.
http://msdn2.microsoft.com/en-us/library/wb42xhfh.aspx[^] shows how to work with a metafile.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Hi,
I have been experimenting with the following C# code:
ADDED
remark: the wmf files are derived from the gif files (with Image.FromFile
and Image.Save); the jpg files are unrelated.
/ADDED
public void test() {
testImageStream("image1.gif", "image2.gif");
testImageStream("image1.jpg", "image2.jpg");
testImageStream("image1.wmf", "image2.wmf");
}
public void testImageStream(string file1, string file2) {
log(new string('-', 80));
log("First create one stream containing two images");
MemoryStream ms=new MemoryStream();
byte[] bytes1=File.ReadAllBytes(file1);
int len1=bytes1.Length;
log("file1="+file1+", len="+len1+", size="+Image.FromFile(file1).Size);
ms.Write(bytes1, 0, len1);
byte[] bytes2=File.ReadAllBytes(file2);
int len2=bytes2.Length;
log("file2="+file2+", len="+len2+", size="+Image.FromFile(file2).Size);
ms.Write(bytes2, 0, len2);
try {
log("trying without rewind, should fail");
Image img1=Image.FromStream(ms);
log(" img1="+img1.Size);
} catch(Exception exc) {
log(exc);
}
try {
log("with explicit positioning");
ms.Seek(0, SeekOrigin.Begin);
Image img1=Image.FromStream(ms);
ms.Seek(len1, SeekOrigin.Begin);
Image img2=Image.FromStream(ms);
log(" img1="+img1.Size+" img2="+img2.Size);
} catch(Exception exc) {
log(exc);
}
try {
log("with only one rewind");
ms.Seek(0, SeekOrigin.Begin);
Image img1=Image.FromStream(ms);
Image img2=Image.FromStream(ms);
log(" img1="+img1.Size+" img2="+img2.Size);
} catch(Exception exc) {
log(exc);
}
}
and this is the output it generates on VS2005 or .NET 2.0:
23:46:13.437 --------------------------------------------------------------------------------
23:46:13.453 First create one stream containing two images
23:46:13.468 file1=image1.gif, len=4315, size={Width=64, Height=131}
23:46:13.468 file2=image2.gif, len=1525, size={Width=40, Height=40}
23:46:13.484 trying without rewind, should fail
23:46:13.500 img1={Width=64, Height=131}
23:46:13.515 with explicit positioning
23:46:13.515 img1={Width=64, Height=131} img2={Width=64, Height=131}
23:46:13.531 with only one rewind
23:46:13.625 img1={Width=64, Height=131} img2={Width=64, Height=131}
23:46:13.640 --------------------------------------------------------------------------------
23:46:13.656 First create one stream containing two images
23:46:13.656 file1=image1.jpg, len=7766, size={Width=143, Height=176}
23:46:13.796 file2=image2.jpg, len=148762, size={Width=632, Height=868}
23:46:13.812 trying without rewind, should fail
23:46:13.828 img1={Width=143, Height=176}
23:46:13.843 with explicit positioning
23:46:13.843 img1={Width=143, Height=176} img2={Width=143, Height=176}
23:46:13.859 with only one rewind
23:46:13.875 img1={Width=143, Height=176} img2={Width=143, Height=176}
23:46:13.984 --------------------------------------------------------------------------------
23:46:14.000 First create one stream containing two images
23:46:14.015 file1=image1.wmf, len=4283, size={Width=64, Height=131}
23:46:14.031 file2=image2.wmf, len=1591, size={Width=40, Height=40}
23:46:14.125 trying without rewind, should fail
23:46:14.140 img1={Width=64, Height=131}
23:46:14.156 with explicit positioning
23:46:14.156 img1={Width=64, Height=131} img2={Width=64, Height=131}
23:46:14.359 with only one rewind
23:46:14.375 img1={Width=64, Height=131} img2={Width=64, Height=131}
so my conclusions are:
1. all image types tested behave identically
2. they all always rewind the stream, which is not how I understand the
documentation "The stream is reset to zero if this method is called successively
with the same stream."
It really seems to be "The stream is reset to zero then read".
3. I fail to see how your original post matches with my test.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
here is my code. comments inside.
http://lamernet.no-ip.com:45173/bordel/wmf.zip
-- modified at 3:57 Sunday 19th August, 2007
|
|
|
|
|
Hi,
looked at your code, it is basically the same as mine.
ran your code, it gives "paramter is not valid" (and OK with rewind).
tried my code with ,true,true added to my FromStreams: no change
Tried my code with your WMF file: no change
googled some on FromStream bug, found many
conclusions:
- same as before
- plus: there seem to be some bugs, so play it safe, do explicit rewind!
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Mine query is I have two data bases db1 and db2. db1 contains one table name country and db2 contains one table contact.
in db1.contact table it has one field country_code and same in db2.country table country_code.
can you give me the solution for it,I want to show country name. but in contact table only it has country_code.
|
|
|
|
|
|
I Added a TextBox Column and Then a ComboBox at The Right Side of That Column to My DataGridView 2.0
The Problem is That The CellValueChanged Event Does Not Raise For ComboBox Cells.
WHAT SHOULD I DO?
Thanks
A.E.K
|
|
|
|
|
Hi
i have small pieces of rtf data (gathered using RichText controls). now i want to combine this all data into a word document. assigning numbers to all every piece of rtf data.
Can anybody let me know the way to it. i am very new to office automation
Salman Sheikh
|
|
|
|
|
Have you looked at using the Office Interop classes?
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
thanx dear. it will definately work but the scenario is a bit problematic
I have a form on which a richtextbox is placed user inputs the data and save it into database. hundreds of records have been saved in this way. now i have to combine these all into a single document. (for each record user is free to use fonts, colors and other rtf formating). now when i joined them all the richtextbox displayed only one record.
now i removed the closing bracket from every record instead of last. it worked but all text is now in black color. i dont know how to preserve the colors in concatenated rtf
Salman Sheikh
|
|
|
|
|
Dear Salman Sheikh,
Try using IO.Stream and get the whole document ni a stream, do what ever you want in the stream and save it as rtf.
|
|
|
|
|
Dear friends,
I wish to add file path what I get on execution of each for loop with the help of code in it. I wish to add those path (one path at one time) to some kind of array which can store strings and after the whole execution, I want to process the array.
But not able to find any insert method on string arrray or array, it's there with arraylist but not able to put string in its items.
thanks,
Jwalant Soneji (BE IT)
Mobile: +91 9969059127
http://jnsoneji.spaces.live.com
http://jnsoneji.blogspot.com
|
|
|
|
|
you can use an ArrayList or a List<string> to hold strings.
myArrayList.Add(myString)
and
string myString=(string)myArrayList[myIndex]
or
foreach(string str in myArrayList) (doh, that's C# syntax !)
-- modified at 6:51 Saturday 18th August, 2007
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Luc Pattyn wrote: myArrayList.Add(myString);
i get error on this.... as its a string and not an object.
Jwalant Soneji (BE IT)
Mobile: +91 9969059127
http://jnsoneji.spaces.live.com
http://jnsoneji.blogspot.com
|
|
|
|
|
Jwalant Natvarlal Soneji wrote: i get error on this....
That is just bizarre
Jwalant Natvarlal Soneji wrote: as its a string and not an object.
I recommend you buy a beginner book on .NET and read it. Number one lesson in .NET, every thing is an object. Object is the base class that all reference types derive from. So, a string is absolutely an object. There is no reason for the code you posted to give an error.
I recommend moving to .NET 2.0, also, that's VS2005.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
then show the relevant code (in PRE tags !) and the compile- or run-time error as is.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/...
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Jwalant Natvarlal Soneji wrote: it's there with arraylist but not able to put string in its items.
ArrayList sucks, real containers did not arrive until .NET 2.0. Having said that, all that's wrong with arraylist is that it's not typesafe,you can put strings in, you just have to cast them back to the string type on the way out
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Dear friends,
I have been working on an applicatin in which user has been assign some images. User needs to print all the documents and I have the images full paths with me in code.
I want user to click on a button and get all the images printed.
But there are many small to big problems in it.
How to write the code to print?
I have found the way to use startifo.verb="print", but seems to be not working all the time, especially when the printer is busy.
What to do friends?
Thanks,
Jwalant Soneji (BE IT)
Mobile: +91 9969059127
http://jnsoneji.spaces.live.com
http://jnsoneji.blogspot.com
|
|
|
|
|
Your best bet is to write your own printing code, then you can format the images any way you like as well as taking control of the print queue.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
Christian Graus wrote: control of the print queue
Dear, where can i find documentation or coding methodology example available on net?
Jwalant Soneji (BE IT)
Mobile: +91 9969059127
http://jnsoneji.spaces.live.com
http://jnsoneji.blogspot.com
|
|
|
|
|
Dear friends,
I have one application installed on each users machine and I have to put watermark on the images I am showing in the application as per what data user enters.
The problem is that for this purpose, I am creating a canvas from the image and then saving that with new name in the same folder. Now,. when the user don't have rights on that server where the images are stored, they are not able to put watermarks.
So, my questin is this:
How to use a particular account to run an application, so that the app has rights but the user don't have to?
Thanks,
Jwalant Soneji (BE IT)
Mobile: +91 9969059127
http://jnsoneji.spaces.live.com
http://jnsoneji.blogspot.com
|
|
|
|
|
Jwalant Natvarlal Soneji wrote: How to use a particular account to run an application, so that the app has rights but the user don't have to?
Your user has to set that up. If you could make your app run under admin, in code, then the whole login system would be worthless.
Instead, store your files in the application data folder for the current logged in user, all users have access to write there.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
You might find it easier to work around this problem. Preferably just give the users rights to write to the images folder (if thats safe). Or have a web service on the server that runs under an account that has the permission to write there - and write your application to upload to the web service. (Theres a lot of potential security vulnerabilities here if you aren't careful).
If those are both out the question then you might have to go for a service on the local machine running as an elevated account, that your application talks to over remoting, and let the server actually perform the upload.
|
|
|
|
|
Will try that out. but if any starter guide to webserivces available please provide me with that.
thanks,
Jwalant Soneji (BE IT)
Mobile: +91 9969059127
http://jnsoneji.spaces.live.com
http://jnsoneji.blogspot.com
|
|
|
|
|
The MSDN is pretty helpful for this one, and Visual Studio makes it pretty easy. There's a few decent guides on MSDN.
|
|
|
|
|