GDI works with handles: HDC for device-contexts, HBITMAP for bitmaps, and so on. MFC provides a wrapper class for each entity provided by GDI: the CDC class wraps a device-context and internally holds an HDC, the CBitmap class wraps a bitmap and internally holds an HBITMAP and so on.
When you call CDC::SelectObject(), it returns a pointer to the appropriate MFC class that represents the GDI object previously selected into the device-context; these pointers are obtained calling the FromHandle() method (e.g. in case of a bitmap object CBitmap::FromHandle() is called).
The pointers obtained in this way could be temporary because, if your application reach the idle state, i.e. its CWinApp::OnIdle() is called, the objects pointed are deleted; this doesn't mean that the underlaying handle is destroyed, but only that the wrapper class is destroyed. As a conseguence, you cannot store such a pointer to use it later: you should select it back into the device-context before returning from the current message handler.
I found the following code to create a MultiFrame image in C#[^] and used it on 3 jpeg files. The file sizes were 96 KB, 103 KB and 82 KB. However, the output file was 2.7 MB.
It seems like the process is decompressing the jpegs or something. I tried to add another parameter to set the quality, but I really don't want to decrease the quality or change the dimensions.
I'm basically trying to find the simplest methods to put the images into an "archive" that I can then read and separate the images at a later time. I don't want to use zip files. I just want to append all images and read them back via offsets and a binary reader and then display the images in a picture box. I'd like to also store these offsets in the output file as some sort of "header" record if possible. I'm trying to keep it simple and the output file size around the same size as the originals.
Any thoughts here on the MultiFrame size issue or a sample of how to create a some "archive"?
If you read the documentation accompanying the sample, it says bitmaps are created from the supplied images and then saved in a tiff format; so yes, the images are decompressed before saving. (Tiff supports various compression schemes, but the sample doesn't give any details as to the particulars of the tiff encoder, and the result implies compression of the tiff was minimal, if employed at all.)
If you're just trying to save the original images into a signle 'archive' file, just open a binary file and write the images into it, one after another. That'll preserve whatever encoding/compression scheme was used in the original image files. It'll be up to you to maintain some sort of index data giving file sizes and/or offsets into the binary archive so you can pull individual images out when you want. As you say, you could create a data structure for this purpose and put it at the head of the file where it'd be read first. Make the first member in the structure the number of images it contains, followed by size and offset for each individual image contained in the archive. It should be fairly simple to implement this, once you've worked out the details of your desired scheme.
glut provide some API to draw sphere such as glutSolidSphere and glutwireSphere. I want to draw 3D earth with diffrent resolution texture like google earth. but the glut API can not realize, where can i find some useful knowledge about it? thanks
I have a list of colors (with RGB value and name). I need to sort them according to the RGB. The list is expected as linear (1 dimensional). Sorting means, similar color (for eg., shades of blue) should come nearby. From googling I found that CIELAB color space is better to use for this. But even though I converted to CIELAB and do a lot of experiments, I couldn't sort successfully.
If you have some suggestions or guidelines please share.
I don't think there is a really good solution to your quest. First of all you have to decide what order you really want. If you have 6 colors (dark green, light green, dark blue, light blue, dark red, light red), what would you want as a result? Once you decided that, it wouldn't be too hard to implement it; the probable approach is giving each color a numeric value which probably would be calculated from two color aspects, e.g. 256 * hue + saturation (each aspect assumed to be between 0 and 255). However I can't imagine a good order for the example given earlier.
As you mentioned, the order can be based on hue. I have already done some experiments with that. If we use HSV or HSL color model, and then the priority is as hue > sat > val/lum, still the order was not satisfying. Then I tried CIELAB, but have no idea on how to sort the colors in this color space. In some sites, it is said that this color space is best for our (human) perspective.
I just want to get an order in the appearance of colors. I doubt, it is not so easy to sort and list the colors in one dimension. Trying again and again...
Currently I try to find a library/framework/component to develop a page layout tool.
It should provide a framework to build a custom appplication.
The user should be able to define a page from pre-defined components like text-boxes and graphics. The display should be the preview of the page like it will be printed (wysiwyg). The user should be able to arrange/resize the components on the page and edit and format the contents of the text boxes. In-place editing of the text twould be nice.
Does anyone know a library (open-source or commercial) which provides those basic capabilities in C++/MFC or COM. So far I could not find suitable libraries.
I have no idea what you are trying and what kind of help you want, as your message is very cryptic. However this[^] tells me D2D_POINT_2F is a structure holding two numbers. I am not surprised the compiler refuses to magically convert that into one number.
Luc Pattyn [Forum Guidelines][Why QA sucks][My Articles] I only read formatted code with indentation, so please use PRE tags for code snippets. I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
If you're using C# then you won't actually have to use DirectX directly (I don't even think you can anymore), you'll be able to use XNA which is much simpler to use and is a lot quicker to set up. I've not used XNA a whole lot but I do remember that everything was fairly simple, including rendering images and text and whatnot. Although I have worked with Direct3D a fair bit, so you may have a slighty tougher time.
It would be well worth your time to take a quick look at some XNA tutorials, it won't take you long to get something up and running and you'll be able to make an informed decision on whether or not you really want to be using XNA / DirectX.
http://www.riemers.net/[^] Has an excellent set of tutorials that would cover almost anything you might want. The only thing I'm not to sure of is printing anything you render, but I imagine it's fairly trivial to render to a bitmap.
If you really want to use Direct3D with C++ then...
1.) Is it a problem to render different FontFamilies?
Rendering text in Direct3D is actually incredibly simple, as long as the font is on the machine DirectX will pretty much sort it all out for you:
D3DXCreateFont(..., &myFont) //Takes all of the params such as italic, bold, font etc and fills in a pointer to a font
You should set up any fonts you may want to use when the application starts then re-use them until the your application closes (at which point you should release them)
2.) Direct2D uses geometries wich can be combined. Can i resolve this function in Direct3D easily, too?
I'm not sure, I've never used Direct2D or DirectDraw, all I know is that everything in Direct3D is done with vertices. If you want a square you'll need to set up 4 vertices that make a square (more precisely, you'll need to make two triangles out of the 4 vertices which will make up your square)
3.) What about printing (the printout is bigger as the visual part on the screen). Can i render the hole scene to a huge bitmap for example, which i can print?
I'm not sure if you can use any DirectX stuff to print directly, but for certain you can render to a Texture and then copy the data from that Texture to something that you can print with.
My current favourite quote is: Punch them in the face, see what happens!
modified on Saturday, May 29, 2010 10:27 AM
Last Visit: 31-Dec-99 18:00 Last Update: 2-Oct-22 15:26