usingSystem.Drawing;usingRhino;usingRhino.Commands;usingRhino.Display;namespace examples_cs
{publicclassDrawBitmapConduit:Rhino.Display.DisplayConduit{privatereadonlyDisplayBitmap m_display_bitmap;publicDrawBitmapConduit(){var flag =newSystem.Drawing.Bitmap(100,100);for(int x =0; x < flag.Height;++x )for(int y =0; y < flag.Width;++y )
flag.SetPixel(x, y,Color.White);var g =Graphics.FromImage(flag);
g.FillEllipse(Brushes.Blue,25,25,50,50);
m_display_bitmap =newDisplayBitmap(flag);}protectedoverridevoidDrawForeground(Rhino.Display.DrawEventArgs e){
e.Display.DrawBitmap(m_display_bitmap,50,50);}}publicclassDrawBitmapCommand:Command{publicoverridestringEnglishName{get{return"csDrawBitmap";}}readonlyDrawBitmapConduit m_conduit =newDrawBitmapConduit();protectedoverrideResultRunCommand(RhinoDoc doc,RunMode mode){// toggle conduit on/off
m_conduit.Enabled=!m_conduit.Enabled;RhinoApp.WriteLine("Custom conduit enabled = {0}", m_conduit.Enabled);
doc.Views.Redraw();returnResult.Success;}}}
importRhinofromRhino.Geometryimport*importSystem.DrawingimportRhino.Displayimport scriptcontext
import rhinoscriptsyntax as rs
classCustomConduit(Rhino.Display.DisplayConduit):def__init__(self):
flag =System.Drawing.Bitmap(100,100)for x inrange(0,100):for y inrange(0,100):
flag.SetPixel(x, y,System.Drawing.Color.Red)
g =System.Drawing.Graphics.FromImage(flag)
g.FillEllipse(System.Drawing.Brushes.Blue,25,25,50,50)self.display_bitmap =Rhino.Display.DisplayBitmap(flag)defDrawForeground(self, e):
e.Display.DrawBitmap(self.display_bitmap,50,50)if __name__=="__main__":
conduit =CustomConduit()
conduit.Enabled=True
scriptcontext.doc.Views.Redraw()
rs.GetString("Pausing for user input")
conduit.Enabled=False
scriptcontext.doc.Views.Redraw()
ImportsSystem.DrawingImportsRhinoImportsRhino.CommandsImportsRhino.DisplayNamespace examples_vb
PublicClassDrawBitmapConduitInheritsRhino.Display.DisplayConduitPrivateReadOnly m_display_bitmap AsDisplayBitmapPublicSubNew()Dim flag =NewSystem.Drawing.Bitmap(100,100)For x AsInteger=0To flag.Height-1For y AsInteger=0To flag.Width-1
flag.SetPixel(x, y,Color.White)NextNextDim g =Graphics.FromImage(flag)
g.FillEllipse(Brushes.Blue,25,25,50,50)
m_display_bitmap =NewDisplayBitmap(flag)EndSubProtectedOverridesSubDrawForeground(e AsRhino.Display.DrawEventArgs)
e.Display.DrawBitmap(m_display_bitmap,50,50)EndSubEndClassPublicClassDrawBitmapCommandInheritsCommandPublicOverridesReadOnlyPropertyEnglishName()AsStringGetReturn"vbDrawBitmap"EndGetEndPropertyReadOnly m_conduit AsNewDrawBitmapConduit()ProtectedOverridesFunctionRunCommand(doc AsRhinoDoc, mode AsRunMode)AsResult' toggle conduit on/off
m_conduit.Enabled=Not m_conduit.EnabledRhinoApp.WriteLine("Custom conduit enabled = {0}", m_conduit.Enabled)
doc.Views.Redraw()ReturnResult.SuccessEndFunctionEndClassEndNamespace