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