XtraDiagramExtensions.DrawDetachedItem(DiagramControl, DiagramItem, GraphicsCache) Method
Allows you to draw a diagram item outside the Canvas/Shapes Panel.
Namespace: DevExpress.XtraDiagram.Extensions
Assembly: DevExpress.XtraDiagram.v24.1.dll
NuGet Package: DevExpress.Win.Diagram
Declaration
public static void DrawDetachedItem(
this DiagramControl diagram,
DiagramItem diagramItem,
GraphicsCache graphicsCache
)
Parameters
Name | Type | Description |
---|---|---|
diagram | DiagramControl | A diagram that is the owner of the item. |
diagramItem | DiagramItem | A diagram item to draw. |
graphicsCache | GraphicsCache | A GraphicsCache object that provides painting facilities. |
Remarks
You can use the DrawDetachedItem method to create a custom Shapes Panel.
The CustomDrawItemEventArgs.Context property returns the DiagramDrawingContext.Detached value for items that are drawn by the DrawDetachedItem method.
The example below illustrates how to generate a bitmap from a diagram item.
using DevExpress.Diagram.Core;
using DevExpress.Utils.Drawing;
using DevExpress.XtraDiagram.Designer;
using DevExpress.XtraDiagram.Extensions;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public static class BitmapHelper {
public static void DrawWithGraphics(this Image image, Action<GraphicsCache> draw) {
using (Graphics graphics = Graphics.FromImage(image)) {
using (GraphicsCache cache = new GraphicsCache(new DXPaintEventArgs(graphics,
Rectangle.Truncate(graphics.ClipBounds)))) {
draw(cache);
}
}
}
}
public void GenerateBitmap() {
var item = new DiagramShape() { Width = 120, Height = 130, BackgroundId = DiagramThemeColorId.Accent5 };
using (var stream = new MemoryStream()) {
using (var bitmap = new Bitmap(200, 200)) {
bitmap.DrawWithGraphics(cache => {
cache.TranslateTransform(10, 25);
Diagram.DrawDetachedItem(item, cache);
});
bitmap.Save(stream, ImageFormat.Png);
}
}
}
The How to: Create a Custom Toolbox example illustrates the usage of the DrawDetachedItem method.