![]() |
Desktop Development »
Miscellaneous »
General
Intermediate
CCurveDlg - Curve InterpolationBy Janssens JohanA Photoshop-like curve dialog. |
VC6Win2K, MFC, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

Welcome to CCurveDlg, a Freeware MFC Curve Class
Its appearance is similar to the curves dialog as seen in the Adobe Photoshop. The classes are split up into a document/view architecture.
CCurveWnd, derived from CWnd, for the visual representation of the curve. This class takes care of drawing and user interaction.
CCurveObject, derived from CObject for the data representation of the curve. This class holds the curve data, and does all calculation calls, to perform the curve interpolation. The actual calculation is done with the help of the XlXtrFun.dll. This is actually an Excel extension DLL or XLL, but I have written a wrapper class CCurveDllImpl for it, so it can easily be used in VC++. For more info regarding this DLL, check their website.
Adding a CCurveWnd is simple, just follow the next steps:
You should also ensure that the 3 cursors (namely, IDC_ARRBLCK, IDC_ARRWHITE and IDC_ARRBLCKCROSS) are copied over into your rc file and renamed properly.
include statement to your project stdafx.h file #include "resource.h"
CCurveWnd member to your own CDialog class: CCurveWnd m_cCurveWnd;
In your CDialog::OnInitDialog(), you need to create the CurveWnd:
m_cCurveWnd.Create("", CRect(25, 55, 235, 265), this, 2001, true);
The Create method is defined as follows:
BOOL Create(LPCTSTR lpszCurveName, //Points to a null-terminated //character string that //contains the window name const RECT &rect, // The size and position //of the window, in client //coordinates of pParentWnd CWnd* pWndParent, // The parent window UINT nID, // The ID of the child window BOOL CreateCurveObj) // Set to true if the create // function has to // create a curve object
Note: If you set CreateCurveObj = false and you don't create a curve object manually by calling CCurveWnd::CreateCurveObject(CString strCurve), the application may assert.
If you want the CurveWnd to draw a parabolic curve, you have to add the following code:
CCurveObject* pCurve = m_cCurveWnd.GetCurveObject(); pCurve->m_bParabolic = true;
The GetCurveObject method is defined as follows:
CCurveObject* GetCurveObject(); // Returns a pointer to the curveobject
Basically that will do the job.
Full description of the API functions is not yet available, I haven't had the time to write it. But I will come up with the first update of the code, so until then just email me if u have problems and questions.
CCurveDlg first released.
If you have any suggested improvements, please let me know so that I can incorporate them into the next release.
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 15 Sep 2001 Editor: Smitha Vijayan |
Copyright 2001 by Janssens Johan Everything else Copyright © CodeProject, 1999-2010 Web22 | Advertise on the Code Project |