About the Custom Root Object (Style Gallery) Sample
[C#]
FrmGxStyleView.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Catalog;
using ESRI.ArcGIS.esriSystem;
namespace CustomRootObject_CS
{
public partial class FrmGxStyleView : Form
{
private clsGxStyleView g_pGxView;
private Bitmap bmpPreview = null;
public FrmGxStyleView()
{
InitializeComponent();
picStylePreview.Paint += new PaintEventHandler(picStylePreview_Paint);
}
public void RefreshView()
{
GeneratePreview();
if (picStylePreview != null)
picStylePreview.Refresh();
}
public clsGxStyleView GxStyleView
{
get { return g_pGxView; }
set { g_pGxView = value; }
}
private void GeneratePreview()
{
if ((picStylePreview == null) || (g_pGxView == null))
return;
tagRECT r = new tagRECT();
r.bottom = picStylePreview.ClientSize.Height;
r.top = 0;
r.right = picStylePreview.ClientSize.Width;
r.left = 0;
bmpPreview = new Bitmap(r.right, r.bottom);
System.Drawing.Graphics GrpObj = Graphics.FromImage(bmpPreview);
try
{
g_pGxView.PreviewItem((Int64)GrpObj.GetHdc(), r);
GrpObj.ReleaseHdc();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
GrpObj.Dispose();
}
picStylePreview.Image = bmpPreview;
}
private void picStylePreview_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
if (bmpPreview == null)
GeneratePreview();
}
private void picStylePreview_SizeChanged(object sender, EventArgs e)
{
GeneratePreview();
}
}
}
[Visual Basic .NET]
FrmGxStyleView.vb
Option Explicit On
Imports System.Drawing
Imports ESRI.ArcGIS.Display
Public Class FrmGxStyleView
Private g_pGxView As clsGxStyleView
Private bmpPreview As Bitmap
Public Sub RefreshView()
GeneratePreview()
If (picStylePreview Is Nothing) Then picStylePreview.Refresh()
End Sub
Public Property GxStyleView() As clsGxStyleView
Get
Return g_pGxView
End Get
Set(ByVal value As clsGxStyleView)
g_pGxView = value
End Set
End Property
Private Sub GeneratePreview()
Dim r As New tagRECT
Try
If ((picStylePreview Is Nothing) Or (g_pGxView Is Nothing)) Then Exit Sub
With r
.bottom = picStylePreview.ClientSize.Height
.top = 0
.right = picStylePreview.ClientSize.Width
.left = 0
End With
bmpPreview = New Bitmap(r.right, r.bottom)
Dim GrpObj As System.Drawing.Graphics = Graphics.FromImage(bmpPreview)
Try
g_pGxView.PreviewItem(GrpObj.GetHdc(), r)
GrpObj.ReleaseHdc()
Catch ex As Exception
MsgBox(ex.ToString())
Finally
GrpObj.Dispose()
End Try
' draw image
picStylePreview.Image = bmpPreview
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
Private Sub picStylePreview_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles picStylePreview.Paint
If (bmpPreview Is Nothing) Then GeneratePreview()
End Sub
Private Sub picStylePreview_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles picStylePreview.SizeChanged
GeneratePreview()
End Sub
End Class