Click here to Skip to main content
Click here to Skip to main content

3D Graph ActiveX Control

By , 2 Aug 2003
 
Prize winner in Competition "MFC/C++ May 2003"

NTGraph3D -Sample Image

Introduction

This is an ActiveX control based on the OpenGL library, which allows you to plot three-dimensional data. The control is entirely written on ATL/STL, and does not link to MFC libraries.

The control can perform the following functions:

  • Axis customization, including customizable font, colors, and titles.
  • Plot a large number of points and updating one or more plots on the graph with new data, replacing the old plot with the new plot.
  • Plot the multiple elements with individual properties such as line and point color, line width, and point size.
  • Lighting
  • Plot styles: {0 (Lines); 1 (Points); 2 (LinePoint); 3 (Surface)}
  • By setting the Projection property you should be able to change the viewing to: (0) Perspective (in which objects that are closer appear larger), and (1) Orthographic (in which the sizes and angles between objects are maintained no matter what their distance from the viewer).
  • By setting the TrackMode property you should be able to do: (1) Zooming, (2) Rotation, and (3) Panning at runtime.

About the Code

To use this control, embed it in an application that supports the use of ActiveX controls. Microsoft Visual Basic applications, all MS Office applications, VBScript and JavaScript in the HTA or Internet Explorer applications, and applications created with the Microsoft Developer Studio’s AppWizard can support the use of ActiveX controls.

Before you start, the control must be register as a COM component using Regsvr32.exe. Regsvr32 takes one argument the DLL or control to register and any of several command-line switches, the most notable of which is /u to uninstall a control. By default that is, when run with only a dll or ocx Regsvr32.exe registers the control.

Note: you must do this on every computer that you are going to use the control!

For more information on how to register and how to include the control in a VC Project, refer to my article 2D Graph ActiveX Control.

Bellow are two listings that demonstrates how to use the control to draw a Torus:

C++

//
//
// Plot Torus
//
void CDemoDlg::OnButton1() 
{
   m_Graph3D.SetCaption ("Torus");
   m_Graph3D.ClearGraph(); // Clear all data
   m_Graph3D.AddElement(); // Add an element to element list

   m_Graph3D.SetElementLineColor(0, RGB(255,0,0));
   m_Graph3D.SetElementType(0, 3); // draw surface
   
   double x,y,z,ti,tj;
   
   for (int i = 0; i < 41; i++)
   {
      ti = (i - 20.0)/20.0 * 3.15;
      
      for (int j = 0; j < 41 ; j++) 
      {
	   tj = (j - 20.0)/20.0 * 3.15;
           
	   x = (cos(tj) + 3.0) * cos(ti);
	   y = sin(tj);
	   z = (cos(tj) + 3.0) * sin(ti);

           m_Graph3D.PlotXYZ(x,y,z,0); 
     }
   }

   //m_Graph3D.SetRange (-4, 4, -1, 1, -4, 4);
   m_Graph3D.AutoRange();
}

Visual Basic

'''''''''''''''''''''''''''''' 
' Look at the Demo3D.hta file 
' Double click on file to start the demo
'
' Plot Torus
'
Sub Torus

   With Graph3D
	.ClearGraph
  	.AddElement
        .Caption = "Torus"
	.ElementType(0) = 3 'Draw Surface

   For i = 0 To 41
    ti = (i - 20.0)/20.0 * 3.15

    For j = 0 To 41 
	
	tj = (j - 20.0)/20.0 * 3.15

	x = (cos(tj) + 3.0) * cos(ti)
	y = sin(tj)
	z = (cos(tj) + 3.0) * sin(ti)
	.PlotXYZ x,y,z,0
        
     Next
    Next
    	.Autorange
  End With
End Sub

List of Control Properties:

    Graph

  •  short Appearance
  •  long BorderStyle
  •  VARIANT_BOOL BorderVisible
  •  BSTR Caption
  •  IFontDisp* Font
  •  OLE_COLOR BackColor
  •  OLE_COLOR CaptionColor
  •  short TrackMode
  •  short Projection
  •  BSTR XLabel
  •  BSTR YLabel
  •  BSTR ZLabel
  •  short XGridNumber
  •  short YGridNumber
  •  short ZGridNumber
  •  OLE_COLOR XGridColor
  •  OLE_COLOR YGridColor
  •  OLE_COLOR ZGridColor

    Elements

  •  OLE_COLOR ElementLineColor(long ElementID, OLE_COLOR newVal)
  •  OLE_COLOR ElementPointColor(long ElementID, OLE_COLOR newVal)
  •  float ElementLineWidth(long ElementID, float newVal)
  •  float ElementPointSize(long ElementID, float newVal)
  •  short ElementType(long ElementID)
  •  BOOL ElementShow(long ElementID)
  •  BOOL ElementSurfaceFill(long ElementID)
  •  BOOL ElementSurfaceFlat(long ElementID)
  •  BOOL ElementLight(long ElementID
  •  short ElementLightingAmbient(long ElementID)
  •  short ElementLightingDiffuse(long ElementID)
  •  short ElementLightingSpecular(long ElementID)
  •  short ElementMaterialAmbient(long ElementID)
  •  short ElementMaterialDiffuse(long ElementID)
  •  short ElementMaterialSpecular(long ElementID)
  •  short ElementMaterialShinines(long ElementID)
  •  short ElementMaterialShinines(long ElementID)
  •  short ElementMaterialEmission(long ElementID)

List of Control Methods:

    Graph

  •  void SetRange(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
  •  void AutoRange()
  •  void ShowPropertyPages()

    Elements

  •  void AddElement()
  •  void DeleteElement(long ElementID)
  •  void ClearGraph()
  •  void PlotXYZ(double x, double y, double z, long ElementID)
  •  void SetLightCoordinates(long ElementID, float x, float y, float z)

Cost: One bottle wine. :-)

Enjoy!

Note: I am not expert on OpenGL, therefore all good suggestions, code and help for imporving the control are welcome!

Send mail to nteofilov@yahoo.de with questions or comments about this article.

History

16 Jun 2003 - v1.0 Initial release

22 Jun 2003 - v2.0

  • Thanks to Alexander Chernosvitov for the Excellent article Function graphics in 3D.
  • Lot’s of new properties (see property list and demo files)
  • ElementType = {0 (Lines); 1 (Points); 2 (LinePoint); 3 (Surface)}
  • Added new demo file that demonstrate the new features
  • New Property BOOL ElementShow(long ElementID)
29 Jul 2003 - v2.1
  • Some drawing fixes
  • Added CopyToClipboard (Works only with release versions of the control! )
  • Added Klein Bottle
  • Changes to the Demo Projects

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Nikolai Teofilov
Researcher
Germany Germany
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
QuestionLline color rainbowmembermahcyp27 Nov '11 - 7:07 
how to change line color like rainbow? plz!!!
 
thanks.
AnswerRe: Lline color rainbowmemberzhaojianzhong12 Aug '12 - 22:55 
How to display the excel file to LED display?
If the file have many pages
GeneralMy vote of 2memberibyk3015 Jun '11 - 14:25 
incomeplete, lacks essential features, not working correctly, abandonware
GeneralRe: My vote of 2memberxrg_soft@163.com28 Jun '11 - 23:28 
If you can write a better control, I'll vote you a better score: 3
GeneralRe: My vote of 2memberelha5818 Oct '11 - 22:18 
Bad criticismThumbs Down | :thumbsdown: . Not helpful.
Please describe what you are missing and where you found problems!
Questionsetting element colormemberibyk3030 May '11 - 7:02 
i am trying to plot surface graph (similar to example "double sine" but solid) and set color of surface based on Z value.
am not sure if i use this properly but i am having some problems. so far i am still playing with the code trying to see how to use it.
for example right now i just use lineplot (modified from "double sine" example) and while plot looks fine, it is next to impossible to see anything because everything is same color.
i can change color but is always applied to entire graph not just line i am ploting.
i expect that after each ".AddElement", and it's ".ElementLineColor(n)=RGB(100 + (n mod 128), 0,0)" i color set for only that element (".PlotXYZ X, Y, Z, n").
for some reason it does not work (or maybe I am not understanding how this is supposed to be used).
 
any help is greatly appreciated.
GeneralMy vote of 5memberRedDK15 Apr '11 - 8:39 
Eight years old and still seriously wawesome!
Questionvisual studio 2010 ?memberroboticEDAR29 Mar '11 - 10:45 
tried to register it on win 7 and then add it to com from C# it worked but then tried to pull in from toolbox and then vs crashed .
any ideas?
QuestionIs the src project is supposed to generate an ActiveX control ?memberMichael B Pliam31 Jan '11 - 11:47 
I am confused by this project. After spending many hours locating and correcting errors and
 
eliminating myriad warnings so that the NTGraph3D_src project would compile on Visual Studion
 
2008, I find there remain a couple of unresolved issues.
 
1) if this is supposed to generate an ActiveX control, why is no OCX file generated ?
2) the only library files generated are the NTGraph3D.dll and the associated NTGraph3D.lib
3) a Custom Build error occurs in every configuration
4) it is not possible to register the NTGraph3D.dll using regsvr32.exe
When attempts are made to do so using regsvr32.exe NTGraph3D.dll, the following message is
 
posted:
 
The NTGraph3D.dll was loaded, but the DLLRegisterServer entry point was not found.
This file cannot be registered.
 
Further, when the src project generated NTGraph3D.dll is placed in the root directory of the demo project, an Assertion Violation is encountered:
 
Debug Assertion Failed!
 
Program: this
File: f:\dd\vctools\vc7libs\ship
atlmfc\src\mfc\occont.cpp
Line 926

ASSERT(IsWindow(pTemp->m_hWnd));
 
This problem can occur when the ActiveX controls are not properly registered on the deployment machine.
http://support.microsoft.com/kb/949107
 

If anyone would like my compilable version of NTGraph3D_src project, send me an email:
 
mbpliam@pliatech.com
 
If anyone has any idea how to get this project and the demos to work, please post your comments
 
here where we can all appreciate your brilliance. Smile | :)
AnswerRe: Is the src project is supposed to generate an ActiveX control ?memberMichael B Pliam26 Feb '11 - 9:01 
I apologize for my ignorance concerning ATL ActiveX controls. I have discovered that my above post is completely in error. In fact, MSDN provides a detailed walk-through on how to create such an ActiveX control.
 
see: http://msdn.microsoft.com/en-us/library/cb1kcads(v=vs.90).aspx
 
Once certain corrections are made in the NTGraph3D_src program, the code will compile using Visual Studio 2008. Further, the Custom Build Event to register the dll will work (Vista requires run as admistrator).
Once the dll is registered, the Demo3D will run but the 'torus' selection causes a runtime error related to some vector subscript boundary error. Similarly, the Torus demo will compile but encounters an immediate runtime error, likely for the same vector boundary reason.
 
I want to thank Ido Ben-Ami for restimulating my interest in this topic. With his help, I was able to correct the NTGraph3D_src to produce a workable dll.
 
For those interested, I am posting the corrections here:
 Corrections made in GraphCtl.cpp
 void CGraphCtl::PlotElement()
  { //..
          //SetLight(theElement);
          SetLight(&(*theElement));
	//..
				//if (PtInRange(aPoint))
				if (PtInRange(&*aPoint))
				{
					//CPoint3D pt = Corrdinate(aPoint);
					CPoint3D pt = Corrdinate(&*aPoint);
					glVertex3f(pt.x,pt.y,pt.z);
				}
	//..
				//if (PtInRange(aPoint))
				if (PtInRange(&*aPoint))
				{
					//CPoint3D pt = Corrdinate(aPoint);
					CPoint3D pt = Corrdinate(&*aPoint);
					glVertex3f(pt.x,pt.y,pt.z);
				}
	//..	
				//int i, npt = sqrt(theElement->m_PointList.size());
				int i=0;
				int npt = int(sqrt((double)(theElement->m_PointList.size())) +0.5);
 
 - stdafx.h
 
	glaux.h is not necessary and is considered obsolete
 
	 // Add native C++ compiler COM support - BSTR, VARIANT wrappers header
	#include <comutil.h> 
	//#pragma comment(lib, "comsupp.lib")
	#pragma comment(lib, "comsuppw.lib")
Hope this helps others.
QuestionWould be nice if this were NOT an ActiveX Control ?memberMichael B Pliam30 Jan '11 - 20:34 
I fail to see how making Alexander Chernosvitov 's code into an ActiveX control adds much utility. I believe that ActiveX controls have fallen out of fashion. It would be nice if the author would update this code without involving ActiveX. Then it would be extremely useful to many. As it is, it is full of errors and warnings when one attempts to compile it in VS 2008. While I certainly appreciate the effort the author put into this, I hope he or someone can update it. Still gets a 5 from me, but it's now too long in the tooth. Smile | :)
AnswerRe: Would be nice if this were NOT an ActiveX Control ?membernguyenvanhauk510 Jul '12 - 20:41 
verry good Poke tongue | ;-P Poke tongue | ;-P Sniff | :^)
GeneralUsing this library in C++memberVi_Ter5 Oct '09 - 4:40 
I can't run this demos (Demo3D and Torus) from C++ Builder 6. Please, tell me step by step what I must to do.
Generalgetting errors for data types(error: C2664)memberhituhoney16 Jul '09 - 2:16 
error C2664: 'CGraphCtl::SetLight' : cannot convert parameter 1 from 'std::_Vector_iterator<_Ty,_Alloc>' to 'CElement *'
error C2664: 'CGraphCtl::PtInRange' : cannot convert parameter 1 from 'std::_Vector_iterator<_Ty,_Alloc>' to 'CPoint3D *'
error C2664: 'CGraphCtl::Corrdinate' : cannot convert parameter 1 from 'std::_Vector_iterator<_Ty,_Alloc>' to 'CPoint3D *'
error C2664: 'CGraphCtl::PtInRange' : cannot convert parameter 1 from 'std::_Vector_iterator<_Ty,_Alloc>' to 'CPoint3D *'
error C2664: 'CGraphCtl::Corrdinate' : cannot convert parameter 1 from 'std::_Vector_iterator<_Ty,_Alloc>' to 'CPoint3D *'
error C2668: 'sqrt' : ambiguous call to overloaded function
 

Can anybody please help me to solve these errors???
GeneralRe: getting errors for data types(error: C2664)memberMember 389846914 Nov '09 - 4:52 
If you run into this one you can do an explicit conversion to a pointer. For instance, in GraphCtl.cpp around line 1104 the for loop can be changed to:

 
for (aPoint; aPoint != theElement->m_PointList.end(); aPoint++)
{
CPoint3D* myPoint = &(*aPoint);
if (PtInRange(myPoint))
{
CPoint3D pt = Corrdinate(myPoint);
glVertex3f(pt.x,pt.y,pt.z);
}
}

GeneralOpen GLmemberMyron Langer16 Apr '09 - 6:32 
Does anyone have a complete VB example of how to get this demo working in a VB project?
GeneralRe: Open GLmemberibyk301 Jun '11 - 5:05 
download NTGraph3D demo, extract files and double click on Demo3D.hta to see it run in a browser.
you can open same file and code is nearly identical to VB, so you can simply copy and paste.
 
of course you need to create new VB application (standard EXE) and add reference (Ctrl+T) to NTGraph after registering ntgraph3d.dll.
this will allow you to drop new NTGraph control onto VB form.
 
can't post file but here is entire form of VB6 demo version.
 
VERSION 5.00
Object = "{7A99C13D-22DF-400C-AB37-48C32A897EFB}#1.0#0"; "ntgraph3d.dll"
Begin VB.Form Form1
Caption = "ibyk30 : NTGraph3D demo in VB6"
ClientHeight = 11850
ClientLeft = 60
ClientTop = 345
ClientWidth = 18495
LinkTopic = "Form1"
ScaleHeight = 11850
ScaleWidth = 18495
StartUpPosition = 3 'Windows Default
Begin VB.Frame Frame1
Caption = "Track Mode"
Height = 2415
Left = 17160
TabIndex = 5
Top = 3840
Width = 1215
Begin VB.OptionButton radTrackModeRotate
Caption = "Rotate"
Height = 495
Left = 120
TabIndex = 9
Top = 1200
Width = 975
End
Begin VB.OptionButton radTrackModePan
Caption = "Pan"
Height = 495
Left = 120
TabIndex = 8
Top = 1680
Width = 975
End
Begin VB.OptionButton radTrackModeZoom
Caption = "Zoom"
Height = 375
Left = 120
TabIndex = 7
Top = 840
Width = 855
End
Begin VB.OptionButton radTrackModeLock
Caption = "Lock"
Height = 375
Left = 120
TabIndex = 6
Top = 360
Value = -1 'True
Width = 975
End
End
Begin VB.CommandButton btnKlein
Caption = "Klein Bottle"
Height = 615
Left = 17160
TabIndex = 4
Top = 2280
Width = 1215
End
Begin VB.CommandButton btnSine
Caption = "Sine"
Height = 615
Left = 17160
TabIndex = 3
Top = 1560
Width = 1215
End
Begin VB.CommandButton btnButterfly
Caption = "Butterfly"
Height = 615
Left = 17160
TabIndex = 2
Top = 840
Width = 1215
End
Begin VB.CommandButton btnTorus
Caption = "Torus"
Height = 615
Left = 17160
TabIndex = 1
Top = 120
Width = 1215
End
Begin NTGRAPH3DLibCtl.NTGraph3D NTGraph3D
Height = 11655
Left = 120
OleObjectBlob = "Form1.frx":0000
TabIndex = 0
Top = 120
Width = 16815
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim i As Integer
Dim j As Integer
Dim ti As Double
Dim tj As Double
Dim x As Double
Dim y As Double
Dim z As Double
Dim csv(800, 1024) As Single
 
Private Sub btnTorus_Click()
With NTGraph3D
.ClearGraph
.AddElement
.Caption = "Torus"
.ElementType(0) = 3 'Draw Surface
 
For i = 0 To 40
ti = (i - 20) / 20 * 3.15

For j = 1 To 41
tj = (j - 20) / 20 * 3.15

x = (Cos(tj) + 3) * Cos(ti)
y = Sin(tj)
z = (Cos(tj) + 3) * Sin(ti)
.PlotXYZ x, y, z, 0

Next
Next
.AutoRange
End With
End Sub
 
Private Sub btnSine_Click()
With NTGraph3D
.ClearGraph
.AddElement
.Caption = "Double Sine"
For i = 0 To 40
x = ((i - 20) / 20) * 3.15

For j = 0 To 40

NTGraph3D.AddElement

z = ((j - 20) / 20) * 3.15

y = Sin(x) * Cos(z) + 2

NTGraph3D.ElementType(j) = 0
NTGraph3D.ElementLineColor(i) = RGB(255, 0, 0)
NTGraph3D.PlotXYZ x, y, z, j
 
Next
Next
 
.AutoRange
End With
End Sub
 
Private Sub btnButterfly_Click()
Dim hold1 As Double
Dim holdm As Double
With NTGraph3D
.Caption = "Butterfly"
.ClearGraph
.AddElement
.ElementType(0) = 3
 
For i = 0 To 41
ti = (i - 20) / 20 * 3.15
For j = 0 To 41
tj = (j - 20) / 20 * 3.15
hold1 = Sin(tj)
holdm = Cos(ti * 0.5) * hold1 - Sin(ti * 0.5) * Sin(tj * 2)

x = holdm * Cos(ti)
y = holdm * Sin(ti) * 0.5
z = Sin(ti * 0.5) * hold1 + Cos(ti * 0.5) * Sin(tj * 0.5)
.PlotXYZ x, y, z, 0
Next
Next
.AutoRange
End With
End Sub
 
Private Sub btnKlein_Click()
 
Dim u As Double
Dim v As Double
Dim rad As Double
Dim Bx As Double
Dim By As Double
Dim Pi As Double
 
With NTGraph3D
.Caption = "Klein Bottle"
.ClearGraph
.AddElement
.ElementPointColor(0) = RGB(0, 0, 255)
.ElementType(0) = 1

'Generate data to plot

Pi = 3.14

For u = 0 To 2 * Pi Step 0.1
For v = 0 To 2 * Pi Step 0.1

Bx = 6 * Cos(u) * (1 + Sin(u))
By = 16 * Sin(u)

rad = 4 * (1 - Cos(u) / 2)

If Pi < u And u <= 2 * Pi Then
x = Bx + rad * Cos(v + Pi)
Else
x = Bx + rad * Cos(u) * Cos(v)
End If

If Pi < u And u <= 2 * Pi Then
y = By
Else
y = By + rad * Sin(u) * Cos(v)
End If

z = rad * Sin(v)

.PlotXYZ x, y, z, 0
Next
Next
.AutoRange
End With
End Sub
 
' radio buttons to select tracking mode
Private Sub radTrackModeLock_Click()
NTGraph3D.TrackMode = 0 ' Lock
End Sub
 
Private Sub radTrackModeZoom_Click()
NTGraph3D.TrackMode = 1 ' Zoom
End Sub
 
Private Sub radTrackModeRotate_Click()
NTGraph3D.TrackMode = 2 ' Rotate
End Sub
 
Private Sub radTrackModePan_Click()
NTGraph3D.TrackMode = 3 ' Pan
End Sub
 
'----------------------------------------------------
 
If you don't really care about OpenGL and just need to plot something that looks 3D,
here is simple alternative. this code uses just series of lines drawn on a form
or Picturebox to present sort of landscape.
i don't recall where i saw the original code but here is modified version.
it allows simple scale and rotation of the plot.
 

Option Explicit
' based on some code sample from web, don't recall URL
Const PI = 3.14159265
Dim byaLandscape(800, 255) As Integer ' can be single as well as long as DrawLandscape datasource type is changed too
 
'Direct draw onto a form or picture box
Private Sub DrawLandscape(disp As Object, datasource() As Integer, PosX As Integer, PosY As Integer, TiltX As Single, TiltY As Single, XYRatio As Single, XYScale As Single)
Dim X As Integer, Y As Integer, Xplot As Integer, Yplot As Integer, yOffset As Single
disp.Cls
disp.AutoRedraw = True
disp.ScaleMode = 3 '3 = Pixels
For Y = UBound(datasource, 2) To LBound(datasource, 2) Step -1
yOffset = Y - 0.5 * UBound(datasource, 2)
For X = LBound(datasource, 1) To UBound(datasource, 1)
Xplot = PosX + CInt(XYScale * (XYRatio * X - TiltX * yOffset))
Yplot = PosY + 0.5 * UBound(datasource, 2) - CInt(XYScale * TiltY * yOffset)
If datasource(X, Y) <> 0 Then
disp.Line (Xplot, Yplot)-(Xplot, Yplot - datasource(X, Y)), RGB(Y * (255 / UBound(datasource, 2)), _
255 - (Y * (255 / UBound(datasource, 2))), _
X * (255 / UBound(datasource, 1)))
End If
Next
Next
End Sub
 

Private Sub Command1_Click()
' DrawLandscape Picture1, byaLandscape, CInt(Me.Text1.Text), CInt(Me.Text2.Text), Val(Me.Text3.Text), Val(Me.Text4.Text), Val(Me.Text5.Text), Val(Me.Text6.Text)
DrawLandscape Me, byaLandscape, CInt(Me.Text1.Text), CInt(Me.Text2.Text), Val(Me.Text3.Text), Val(Me.Text4.Text), Val(Me.Text5.Text), Val(Me.Text6.Text)
End Sub
 

Private Sub Form_Load()
'This will create data a sort of wavy landscape
Dim X As Integer, Y As Integer
For X = LBound(byaLandscape, 1) To UBound(byaLandscape, 1)
For Y = LBound(byaLandscape, 2) To UBound(byaLandscape, 2)
byaLandscape(X, Y) = 48 + (Sin((X + Y) * PI / 127) * Sin(Y * PI / 127)) * 32
Next
Next
End Sub
GeneralRe: Open GLmemberibyk301 Jun '11 - 5:26 
for the last code sample, just add button and six textboxes.
add label next to each text box and set values as follows:
textNo / label.caption / textbox value
1 / X / 250
2 / Y / 150
3 / dX / 0.5
4 / dY / 0.5
5 / xyRatio / 0.5
6 / xyScale / 1.0
GeneralUsing this library in С#membergetbraine20 Feb '09 - 23:42 
Hi!
Could you write some examples how to use this library in my С# -project?Thx for help!
GeneralRe: Using this library in С#membermaslbl425 Aug '10 - 4:51 
Add NTGraph3D.dll in References. Then add control from COM components in toolbox. And use =)
GeneralRe: Using this library in С#memberroboticEDAR29 Mar '11 - 10:34 
does one have to register it with the system first ?
GeneralNTGraph3D in Accessmembermbojanks27 Oct '08 - 2:43 
Have you checked the exact name of the control in Access? If yes, have you then tried writing NTGraph3D0.Object instead of just NTGraph3D0 (or whatever your control`s name was) in the With line of the Torus example? Torus example with this .Object modification works fine in Access for me.
Generalntgraphmemberabhinav bhorkar16 Oct '08 - 3:51 
please tell me how to change the grid distances of x & y axis in ntgraph activex control.
 
abhinav bhorkar
GeneralCompile Error in ExcelmemberBonnie Douglas14 Oct '08 - 20:42 
Hi,
I've been using VBA for some time but have never worked with ActiveX controls.
I am trying to use this ActiveX Control in Excel.
I have registered the dll using REGSVR32.
I created an ActiveX control using NTGraph3D class.
I can see the empty x,y,z axis in the control.
I double-clicked on the control to add code.
I have ensured that I've ticked "NTGraph3D 1.0 Type Library" in my project References.
I can see the NTGraph3D objects when I open the object browser.
 
I have created the following test code:
 
Sub TstTorus()
 
Dim Gr As OLEObject
Dim WS As Worksheet
 
Set WS = Worksheets("Sheet1")
WS.OLEObject("NTGraph3D").ClearGraph
End Sub

 
I keep getting the same compile error:
Object library invalid or contains references to object definitions that could not be found.
 
Is there some step that I've missed? I would greatly appreciate help!
bd
GeneralDirect3D [modified]memberRaheel Anwar3 Sep '08 - 7:38 
I want to use 2d capabilities of Direct3D. I have different bitmaps and need to blit these directly on 'Backbuffer of device'. I created a surface using IDirect3Device::CreateOffScreenPlainSurface() then I blit bitmap on this surfsace using GetDC() function of surface. Then I used IDirect3Device::GetBackBuffer() method to get backbuffer surface and using IDirect3Device::StretchRect(), did blit on backbuffer surfaceBut It did not work. Kindly guide me in this regard.
Raheel
 
modified on Saturday, September 6, 2008 7:46 AM

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130523.1 | Last Updated 3 Aug 2003
Article Copyright 2003 by Nikolai Teofilov
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid