# Drawing to a vector image format

**URL:** <https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763>\
**Category:** WinForms\
**Created:** [July 25, 2011, 10:05am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763 "2011-07-25T10:05:31Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![Brian1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@Brian1](https://community.thinkgeo.com/u/Brian1)\
**Post date:** [July 25, 2011, 10:05am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/1 "2011-07-25T10:05:31Z")

</div>

Hi,

I&nbsp;would&nbsp;like&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;get&nbsp;a&nbsp;vector&nbsp;image&nbsp;(.net&nbsp;Metafile&nbsp;class)&nbsp;of&nbsp;a&nbsp;rendered&nbsp;map.&nbsp;&nbsp;I&nbsp;know&nbsp;in&nbsp;V2&nbsp;I&nbsp;used&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;get&nbsp;the&nbsp;actual&nbsp;metafiles&nbsp;from&nbsp;the&nbsp;map,&nbsp;but&nbsp;I&nbsp;don't&nbsp;see&nbsp;an&nbsp;option&nbsp;like&nbsp;that&nbsp;currently.&nbsp;&nbsp;I&nbsp;plan&nbsp;on&nbsp;inserting&nbsp;the&nbsp;vector&nbsp;image&nbsp;of&nbsp;them&nbsp;into&nbsp;various&nbsp;report&nbsp;generating&nbsp;componets&nbsp;(Active&nbsp;Reports&nbsp;for&nbsp;example)&nbsp;and&nbsp;I&nbsp;won't&nbsp;know&nbsp;the&nbsp;specific&nbsp;pixel&nbsp;size&nbsp;when&nbsp;I&nbsp;render&nbsp;the&nbsp;map&nbsp;and&nbsp;would&nbsp;like&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;scale&nbsp;the&nbsp;image&nbsp;in&nbsp;the&nbsp;report&nbsp;engine&nbsp;without&nbsp;distortion&nbsp;like&nbsp;a&nbsp;bitmap&nbsp;would.

I've&nbsp;attempted&nbsp;to&nbsp;pass&nbsp;a&nbsp;metafile&nbsp;into&nbsp;a&nbsp;GdiPlusGeoCanvas&nbsp;without&nbsp;luck.

Do&nbsp;I&nbsp;need&nbsp;to&nbsp;implement&nbsp;my&nbsp;own&nbsp;GeoCanvas&nbsp;or&nbsp;is&nbsp;there&nbsp;something&nbsp;else&nbsp;I'm&nbsp;missing.&nbsp;

Thanks

Brian

---

<div class="post-metadata">

**Author:** ![Brian1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@Brian1](https://community.thinkgeo.com/u/Brian1)\
**Post date:** [July 25, 2011, 1:56pm UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/2 "2011-07-25T13:56:52Z")

</div>

I&nbsp;have&nbsp;been&nbsp;able&nbsp;to&nbsp;modify&nbsp;our&nbsp;report&nbsp;generation&nbsp;process&nbsp;to&nbsp;set&nbsp;the&nbsp;map&nbsp;size&nbsp;to&nbsp;the&nbsp;actual&nbsp;size&nbsp;of&nbsp;the&nbsp;image&nbsp;needed,&nbsp;but&nbsp;rendering&nbsp;to&nbsp;bitmaps&nbsp;justs&nbsp;makes&nbsp;the&nbsp;final&nbsp;reports&nbsp;large&nbsp;in&nbsp;file&nbsp;size&nbsp;and&nbsp;blurry.&nbsp;&nbsp;Increasing&nbsp;the&nbsp;pixel&nbsp;count&nbsp;of&nbsp;the&nbsp;bitmap&nbsp;by&nbsp;2&nbsp;to&nbsp;3&nbsp;times&nbsp;helps,&nbsp;but&nbsp;also&nbsp;ups&nbsp;the&nbsp;size&nbsp;considerably.

I've&nbsp;looked&nbsp;at&nbsp;trying&nbsp;to&nbsp;implement&nbsp;my&nbsp;own&nbsp;GeoCanvas&nbsp;that&nbsp;could&nbsp;write&nbsp;to&nbsp;a&nbsp;System.Drawing.Imaging.Metafile,&nbsp;but&nbsp;it&nbsp;looks&nbsp;like&nbsp;I&nbsp;would&nbsp;have&nbsp;to&nbsp;re-create&nbsp;a&nbsp;lot&nbsp;of&nbsp;the&nbsp;drawing&nbsp;logic&nbsp;that&nbsp;should&nbsp;already&nbsp;be&nbsp;in&nbsp;the&nbsp;GdiPlusGeoCanvas.&nbsp;&nbsp;Metafile&nbsp;inherits&nbsp;from&nbsp;image&nbsp;so&nbsp;it&nbsp;should&nbsp;be&nbsp;able&nbsp;to&nbsp;be&nbsp;written&nbsp;to&nbsp;like&nbsp;any&nbsp;other&nbsp;.net&nbsp;Image&nbsp;class,&nbsp;but&nbsp;GdiPlusGeoCanvas.BeginDrawing&nbsp;throws&nbsp;an&nbsp;exception&nbsp;if&nbsp;you&nbsp;pass&nbsp;it&nbsp;a&nbsp;metafile.

I've&nbsp;also&nbsp;looked&nbsp;at&nbsp;the&nbsp;GeoImage&nbsp;class&nbsp;to&nbsp;see&nbsp;if&nbsp;I&nbsp;could&nbsp;provide&nbsp;a&nbsp;subclass&nbsp;that&nbsp;would&nbsp;be&nbsp;backed&nbsp;by&nbsp;a&nbsp;metafile,&nbsp;but&nbsp;I&nbsp;don't&nbsp;see&nbsp;a&nbsp;way&nbsp;to&nbsp;do&nbsp;that&nbsp;either.

Thanks&nbsp;for&nbsp;the&nbsp;help&nbsp;in&nbsp;advance.

---

<div class="post-metadata">

**Author:** ![ThinkGeo](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/thinkgeo/32/25029_2.png) [@ThinkGeo](https://community.thinkgeo.com/u/ThinkGeo)\
**Post date:** [July 26, 2011, 1:44am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/3 "2011-07-26T01:44:25Z")

</div>

Brian,&nbsp;  
&nbsp;&nbsp;  
&nbsp;We&nbsp;provide&nbsp;many&nbsp;kinds&nbsp;of&nbsp;RasterLayer&nbsp;in&nbsp;currently&nbsp;version,&nbsp;such&nbsp;as&nbsp;EcwRasterLayer,&nbsp;GdiPlusRasterLayer&nbsp;etc.&nbsp;You&nbsp;can&nbsp;find&nbsp;samples&nbsp;in&nbsp;our&nbsp;HowDoI&nbsp;sample-\>Satellite&nbsp;Image-\>,&nbsp;  
&nbsp;&nbsp;  
&nbsp;Let&nbsp;me&nbsp;know&nbsp;if&nbsp;you&nbsp;have&nbsp;more&nbsp;questions.&nbsp;  
&nbsp;&nbsp;  
&nbsp;Thanks,&nbsp;  
&nbsp;James

---

<div class="post-metadata">

**Author:** ![Brian1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@Brian1](https://community.thinkgeo.com/u/Brian1)\
**Post date:** [July 26, 2011, 8:14am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/4 "2011-07-26T08:14:43Z")

</div>

Hi&nbsp;James,&nbsp;  
  
  
  
I&nbsp;not&nbsp;looking&nbsp;to&nbsp;load&nbsp;a&nbsp;vector&nbsp;image&nbsp;as&nbsp;a&nbsp;layer&nbsp;in&nbsp;the&nbsp;map...I&nbsp;need&nbsp;to&nbsp;export&nbsp;drawn&nbsp;feature&nbsp;layers&nbsp;as&nbsp;a&nbsp;vector&nbsp;image&nbsp;for&nbsp;high&nbsp;quality&nbsp;printing.&nbsp;&nbsp;Like&nbsp;your&nbsp;PDFGeoCanvas&nbsp;does,&nbsp;except&nbsp;I&nbsp;need&nbsp;more&nbsp;control&nbsp;over&nbsp;the&nbsp;final&nbsp;layout&nbsp;then&nbsp;I&nbsp;think&nbsp;I&nbsp;can&nbsp;get&nbsp;with&nbsp;the&nbsp;PDF&nbsp;canvas.&nbsp;&nbsp;Unless&nbsp;I&nbsp;could&nbsp;pre-create&nbsp;a&nbsp;PDF&nbsp;and&nbsp;then&nbsp;be&nbsp;able&nbsp;to&nbsp;draw&nbsp;the&nbsp;map&nbsp;in&nbsp;a&nbsp;specific&nbsp;extent&nbsp;of&nbsp;the&nbsp;PDF&nbsp;page.&nbsp;  
  
  
  
Thanks

---

<div class="post-metadata">

**Author:** ![ThinkGeo](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/thinkgeo/32/25029_2.png) [@ThinkGeo](https://community.thinkgeo.com/u/ThinkGeo)\
**Post date:** [July 27, 2011, 9:20am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/5 "2011-07-27T09:20:54Z")

</div>

Brian,&nbsp;  
&nbsp;&nbsp;  
&nbsp;I&nbsp;don’t&nbsp;know&nbsp;how&nbsp;you&nbsp;do&nbsp;it&nbsp;in&nbsp;MapSuite&nbsp;2.0,&nbsp;if&nbsp;you&nbsp;can&nbsp;give&nbsp;more&nbsp;information&nbsp;that&nbsp;will&nbsp;be&nbsp;helpful.&nbsp;  
&nbsp;For&nbsp;Pdf&nbsp;requirement,&nbsp;if&nbsp;you&nbsp;have&nbsp;a&nbsp;pre-create&nbsp;pdf&nbsp;document,&nbsp;and&nbsp;you&nbsp;want&nbsp;to&nbsp;draw&nbsp;map&nbsp;in&nbsp;specific&nbsp;extent&nbsp;of&nbsp;pdf&nbsp;page,&nbsp;I&nbsp;think&nbsp;you&nbsp;only&nbsp;need&nbsp;to&nbsp;export&nbsp;current&nbsp;map&nbsp;extent&nbsp;to&nbsp;an&nbsp;image&nbsp;with&nbsp;suitable&nbsp;size,&nbsp;our&nbsp;DesktopEdition&nbsp;provide&nbsp;API&nbsp;GetBitmap&nbsp;method&nbsp;in&nbsp;WinformsMap,&nbsp;you&nbsp;can&nbsp;try&nbsp;to&nbsp;use&nbsp;it.&nbsp;  
&nbsp;&nbsp;  
&nbsp;Let&nbsp;me&nbsp;know&nbsp;if&nbsp;you&nbsp;have&nbsp;more&nbsp;questions.&nbsp;  
&nbsp;&nbsp;  
&nbsp;Thanks,&nbsp;  
&nbsp;James&nbsp;

---

<div class="post-metadata">

**Author:** ![Brian1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@Brian1](https://community.thinkgeo.com/u/Brian1)\
**Post date:** [August 3, 2011, 9:48am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/6 "2011-08-03T09:48:45Z")

</div>

Hi&nbsp;James,

I&nbsp;found&nbsp;that&nbsp;old&nbsp;code&nbsp;where&nbsp;I&nbsp;got&nbsp;vectors&nbsp;before,&nbsp;it&nbsp;was&nbsp;actually&nbsp;in&nbsp;V1&nbsp;of&nbsp;Map&nbsp;Suite.&nbsp;&nbsp;Back&nbsp;then&nbsp;each&nbsp;layer&nbsp;would&nbsp;have&nbsp;a&nbsp;vector&nbsp;image&nbsp;property&nbsp;that&nbsp;I&nbsp;could&nbsp;get&nbsp;and&nbsp;then&nbsp;I&nbsp;would&nbsp;redraw&nbsp;each&nbsp;layer&nbsp;into&nbsp;a&nbsp;new&nbsp;Metafile.&nbsp;&nbsp;I&nbsp;know&nbsp;MapSuite&nbsp;is&nbsp;a&nbsp;completely&nbsp;different&nbsp;code&nbsp;base&nbsp;now&nbsp;days,&nbsp;but&nbsp;I&nbsp;would&nbsp;really&nbsp;like&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;get&nbsp;vector&nbsp;images&nbsp;of&nbsp;the&nbsp;layers&nbsp;still,&nbsp;they&nbsp;produce&nbsp;much&nbsp;nicer&nbsp;images&nbsp;for&nbsp;inserting&nbsp;in&nbsp;things&nbsp;like&nbsp;PDFs.&nbsp;&nbsp;Right&nbsp;now&nbsp;I'm&nbsp;making&nbsp;bitmaps&nbsp;4&nbsp;times&nbsp;the&nbsp;size&nbsp;I&nbsp;need&nbsp;so&nbsp;when&nbsp;they&nbsp;are&nbsp;scaled&nbsp;back&nbsp;in&nbsp;a&nbsp;PDF&nbsp;they&nbsp;look&nbsp;nice.&nbsp;

Its&nbsp;all&nbsp;GDI+&nbsp;based&nbsp;commands&nbsp;so&nbsp;I&nbsp;would&nbsp;think&nbsp;there&nbsp;could&nbsp;be&nbsp;a&nbsp;way&nbsp;to&nbsp;do&nbsp;with&nbsp;the&nbsp;GDIPlusCanvas,&nbsp;hope&nbsp;this&nbsp;helps&nbsp;you&nbsp;understand&nbsp;what&nbsp;I'm&nbsp;looking&nbsp;for.

Thanks

Brian

&nbsp;

//&nbsp;Create&nbsp;a&nbsp;Bitmap  
  
Bitmap&nbsp;bitmap&nbsp;=&nbsp;new&nbsp;Bitmap(&nbsp;1,&nbsp;1,&nbsp;PixelFormat.Format24bppRgb&nbsp;);  
  
//&nbsp;Wrap&nbsp;a&nbsp;Graphics&nbsp;around&nbsp;the&nbsp;Bitmap  
  
Graphics&nbsp;gRef&nbsp;=&nbsp;Graphics.FromImage(&nbsp;bitmap&nbsp;);  
  
//&nbsp;Get&nbsp;an&nbsp;HDC&nbsp;from&nbsp;the&nbsp;Graphics  
  
IntPtr&nbsp;&nbsp;&nbsp;&nbsp;hDC&nbsp;=&nbsp;gRef.GetHdc();  
  
//&nbsp;Create&nbsp;a&nbsp;recordable&nbsp;Metafile  
  
Metafile&nbsp;mf&nbsp;=&nbsp;new&nbsp;Metafile(&nbsp;hDC,EmfType.EmfOnly);  
  
//&nbsp;Release&nbsp;the&nbsp;HDC  
  
gRef.ReleaseHdc(&nbsp;hDC&nbsp;);  
  
gRef.Dispose();  
  
bitmap.Dispose();  
  
//&nbsp;Wrap&nbsp;a&nbsp;Graphics&nbsp;around&nbsp;the&nbsp;Metafile&nbsp;so&nbsp;we&nbsp;can&nbsp;draw&nbsp;on&nbsp;it  
  
Graphics&nbsp;g&nbsp;=&nbsp;Graphics.FromImage(mf);

if(ArialPhoto!=null)  
  
&nbsp;g.DrawImageUnscaled(ArialPhoto,0,0);  
  
foreach(MapSuite.Layer&nbsp;layer&nbsp;in&nbsp;map1.Layers)  
  
{  
  
&nbsp;if(layer.VectorImage!=null)  
  
&nbsp;&nbsp;g.DrawImageUnscaled(layer.VectorImage,0,0);  
  
}  
  
if(labeler.LabelImage!=null)  
  
&nbsp;g.DrawImageUnscaled(labeler.LabelImage,0,0);

g.Dispose();

---

<div class="post-metadata">

**Author:** ![ThinkGeo](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/thinkgeo/32/25029_2.png) [@ThinkGeo](https://community.thinkgeo.com/u/ThinkGeo)\
**Post date:** [August 4, 2011, 10:19am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/7 "2011-08-04T10:19:48Z")

</div>

&nbsp;Brian,

I&nbsp;provide&nbsp;sample&nbsp;to&nbsp;show&nbsp;how&nbsp;to&nbsp;use&nbsp;GdiPluGeoCanvas&nbsp;to&nbsp;draw&nbsp;layer&nbsp;on&nbsp;a&nbsp;bitmap,&nbsp;but&nbsp;I&nbsp;am&nbsp;not&nbsp;sure&nbsp;if&nbsp;it's&nbsp;what&nbsp;your&nbsp;want.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.Open();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GdiPlusGeoCanvas&nbsp;canvas&nbsp;=&nbsp;new&nbsp;GdiPlusGeoCanvas();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bitmap&nbsp;vectorImage&nbsp;=&nbsp;new&nbsp;Bitmap(winformsMap1.Width,&nbsp;winformsMap1.Height);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canvas.BeginDrawing(vectorImage,&nbsp;winformsMap1.CurrentExtent,&nbsp;winformsMap1.MapUnit);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.Draw(canvas,&nbsp;new&nbsp;Collection\<SimpleCandidate\>());

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canvas.EndDrawing();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.Close();

Please&nbsp;let&nbsp;me&nbsp;know&nbsp;if&nbsp;I&nbsp;misunderstanded.

Thanks,

James

---

<div class="post-metadata">

**Author:** ![Brian1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@Brian1](https://community.thinkgeo.com/u/Brian1)\
**Post date:** [August 4, 2011, 10:24am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/8 "2011-08-04T10:24:00Z")

</div>

Hi&nbsp;James,

That&nbsp;will&nbsp;draw&nbsp;to&nbsp;a&nbsp;bitmap,&nbsp;not&nbsp;a&nbsp;vector&nbsp;metafile

In&nbsp;my&nbsp;example&nbsp;before&nbsp;I&nbsp;created&nbsp;a&nbsp;new&nbsp;1x1&nbsp;pixel&nbsp;bitmap&nbsp;only&nbsp;to&nbsp;get&nbsp;a&nbsp;GDI&nbsp;graphics&nbsp;reference,&nbsp;to&nbsp;get&nbsp;the&nbsp;Hdc&nbsp;hangle&nbsp;in&nbsp;order&nbsp;to&nbsp;create&nbsp;a&nbsp;new&nbsp;metafile

A&nbsp;Metafile&nbsp;does&nbsp;inherit&nbsp;from&nbsp;the&nbsp;.net&nbsp;Image&nbsp;class,&nbsp;but&nbsp;if&nbsp;you&nbsp;pass&nbsp;it&nbsp;into&nbsp;the&nbsp;GdiPlusGeoCanvas&nbsp;it&nbsp;will&nbsp;throw&nbsp;an&nbsp;exception.

Try&nbsp;the&nbsp;code&nbsp;below.

Brian

&nbsp;//&nbsp;Create&nbsp;a&nbsp;Bitmap  
  
Bitmap&nbsp;bitmap&nbsp;=&nbsp;new&nbsp;Bitmap(&nbsp;1,&nbsp;1,&nbsp;PixelFormat.Format24bppRgb&nbsp;);  
  
//&nbsp;Wrap&nbsp;a&nbsp;Graphics&nbsp;around&nbsp;the&nbsp;Bitmap  
  
Graphics&nbsp;gRef&nbsp;=&nbsp;Graphics.FromImage(&nbsp;bitmap&nbsp;);  
  
//&nbsp;Get&nbsp;an&nbsp;HDC&nbsp;from&nbsp;the&nbsp;Graphics  
  
IntPtr&nbsp;hDC&nbsp;=&nbsp;gRef.GetHdc();  
  
//&nbsp;Create&nbsp;a&nbsp;recordable&nbsp;Metafile  
  
Metafile&nbsp;mf&nbsp;=&nbsp;new&nbsp;Metafile(&nbsp;hDC,EmfType.EmfOnly);  
  
//&nbsp;Release&nbsp;the&nbsp;HDC  
  
gRef.ReleaseHdc(&nbsp;hDC&nbsp;);  
  
gRef.Dispose();  
  
bitmap.Dispose();  
  
&nbsp;

layer.Open();

GdiPlusGeoCanvas&nbsp;canvas&nbsp;=&nbsp;new&nbsp;GdiPlusGeoCanvas();

Bitmap&nbsp;vectorImage&nbsp;=&nbsp;new&nbsp;Bitmap(winformsMap1.Width,&nbsp;winformsMap1.Height);

canvas.BeginDrawing(mf,&nbsp;winformsMap1.CurrentExtent,&nbsp;winformsMap1.MapUnit);

layer.Draw(canvas,&nbsp;new&nbsp;Collection\<simplecandidate\>\</simplecandidate\>());

canvas.EndDrawing();

layer.Close();

&nbsp;

---

<div class="post-metadata">

**Author:** ![ThinkGeo](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/thinkgeo/32/25029_2.png) [@ThinkGeo](https://community.thinkgeo.com/u/ThinkGeo)\
**Post date:** [August 5, 2011, 12:28pm UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/9 "2011-08-05T12:28:02Z")

</div>

&nbsp;Brian,

Could&nbsp;you&nbsp;try&nbsp;to&nbsp;override&nbsp;DrawScreenImageWithoutScalingCore&nbsp;method&nbsp;in&nbsp;GdiPlusGeoCanvas?&nbsp;Here&nbsp;are&nbsp;the&nbsp;sample&nbsp;code&nbsp;you&nbsp;can&nbsp;refer&nbsp;to:

&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;CustomGdiPlusGeoCanvas&nbsp;:&nbsp;GdiPlusGeoCanvas

&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bitmap&nbsp;canvasBitmap;

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;override&nbsp;void&nbsp;BeginDrawingCore(object&nbsp;nativeImage,&nbsp;RectangleShape&nbsp;worldExtent,&nbsp;GeographyUnit&nbsp;drawingMapUnit)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canvasBitmap&nbsp;=&nbsp;nativeImage&nbsp;as&nbsp;Bitmap;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.BeginDrawingCore(nativeImage,&nbsp;worldExtent,&nbsp;drawingMapUnit);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;override&nbsp;void&nbsp;DrawScreenImageWithoutScalingCore(GeoImage&nbsp;image,&nbsp;float&nbsp;centerXInScreen,&nbsp;float&nbsp;centerYInScreen,&nbsp;DrawingLevel&nbsp;drawingLevel,&nbsp;float&nbsp;xOffset,&nbsp;float&nbsp;yOffset,&nbsp;float&nbsp;rotateAngle)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bitmap&nbsp;bitmap;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock&nbsp;(image)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitmap&nbsp;=&nbsp;new&nbsp;Bitmap(image.GetImageStream(this));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bitmap.SetResolution(Dpi,&nbsp;Dpi);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;imageWidth&nbsp;=&nbsp;bitmap.Width;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;imageHeight&nbsp;=&nbsp;bitmap.Height;

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;screenX&nbsp;=&nbsp;centerXInScreen;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;screenY&nbsp;=&nbsp;centerYInScreen;

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screenX&nbsp;+=&nbsp;-imageWidth&nbsp;/&nbsp;2.0f&nbsp;+&nbsp;xOffset;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screenY&nbsp;+=&nbsp;-imageHeight&nbsp;/&nbsp;2.0f&nbsp;+&nbsp;yOffset;

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(rotateAngle&nbsp;==&nbsp;0)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics&nbsp;graphics&nbsp;=&nbsp;Graphics.FromImage(canvasBitmap);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.DrawImageUnscaled(bitmap,&nbsp;(int)Math.Round(screenX),&nbsp;(int)Math.Round(screenY));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(bitmap&nbsp;!=&nbsp;null)&nbsp;{&nbsp;bitmap.Dispose();&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;upperLeftPointX&nbsp;=&nbsp;-imageWidth&nbsp;\*&nbsp;0.5f;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;upperLeftPointY&nbsp;=&nbsp;imageHeight&nbsp;\*&nbsp;0.5f;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;rotateRadient&nbsp;=&nbsp;rotateAngle&nbsp;\*&nbsp;Math.PI&nbsp;/&nbsp;180;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;baseRadient&nbsp;=&nbsp;Math.PI&nbsp;-&nbsp;Math.Atan((double)imageHeight&nbsp;/&nbsp;(double)imageWidth);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;radius&nbsp;=&nbsp;Math.Sqrt(imageWidth&nbsp;\*&nbsp;imageWidth&nbsp;+&nbsp;imageHeight&nbsp;\*&nbsp;imageHeight)&nbsp;\*&nbsp;0.5;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;newRadient&nbsp;=&nbsp;baseRadient&nbsp;+&nbsp;rotateRadient;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;newPointX&nbsp;=&nbsp;radius&nbsp;\*&nbsp;Math.Cos(newRadient);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;newPointY&nbsp;=&nbsp;radius&nbsp;\*&nbsp;Math.Sin(newRadient);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;xOffsetInScreen&nbsp;=&nbsp;newPointX&nbsp;-&nbsp;upperLeftPointX;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;yOffsetInScreen&nbsp;=&nbsp;-(newPointY&nbsp;-&nbsp;upperLeftPointY);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screenX&nbsp;+=&nbsp;(float)xOffsetInScreen;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;screenY&nbsp;+=&nbsp;(float)yOffsetInScreen;

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics&nbsp;graphics&nbsp;=&nbsp;Graphics.FromImage(canvasBitmap);

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.TranslateTransform(screenX,&nbsp;screenY);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.RotateTransform(-rotateAngle);

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.DrawImageUnscaled(bitmap,&nbsp;0,&nbsp;0);

&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.RotateTransform(rotateAngle);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graphics.TranslateTransform(-screenX,&nbsp;-screenY);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finally

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(bitmap&nbsp;!=&nbsp;null)&nbsp;{&nbsp;bitmap.Dispose();&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;

If&nbsp;you&nbsp;still&nbsp;could&nbsp;make&nbsp;it,&nbsp;I&nbsp;have&nbsp;no&nbsp;other&nbsp;ways.

Sorry&nbsp;for&nbsp;inconvenience.

James

---

<div class="post-metadata">

**Author:** ![Brian1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@Brian1](https://community.thinkgeo.com/u/Brian1)\
**Post date:** [August 12, 2011, 9:29am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/10 "2011-08-12T09:29:57Z")

</div>

Hi&nbsp;James,&nbsp;  
&nbsp;&nbsp;  
&nbsp;Thanks&nbsp;for&nbsp;the&nbsp;suggestion,&nbsp;but&nbsp;I&nbsp;believe&nbsp;the&nbsp;problem&nbsp;is&nbsp;it&nbsp;appears&nbsp;to&nbsp;me&nbsp;that&nbsp;&nbsp;your&nbsp;GdiPlusGeoCanvas&nbsp;must&nbsp;have&nbsp;a&nbsp;Bitmap&nbsp;object&nbsp;to&nbsp;draw&nbsp;to.&nbsp;&nbsp;Because&nbsp;only&nbsp;your&nbsp;GeoImage&nbsp;objects&nbsp;or&nbsp;Bitmaps&nbsp;are&nbsp;accepted&nbsp;by&nbsp;the&nbsp;BeginDrawing&nbsp;method.&nbsp;&nbsp;Redrawing&nbsp;a&nbsp;bitmap&nbsp;to&nbsp;vector&nbsp;image&nbsp;does&nbsp;not&nbsp;produce&nbsp;the&nbsp;desired&nbsp;result,&nbsp;because&nbsp;all&nbsp;the&nbsp;layers&nbsp;that&nbsp;have&nbsp;been&nbsp;drawn&nbsp;are&nbsp;already&nbsp;rasterized&nbsp;by&nbsp;the&nbsp;Gdi&nbsp;canvas&nbsp;using&nbsp;a&nbsp;bitmap.&nbsp;  
&nbsp;&nbsp;  
&nbsp;It&nbsp;appears&nbsp;to&nbsp;me&nbsp;that&nbsp;only&nbsp;solution&nbsp;to&nbsp;this&nbsp;is&nbsp;a&nbsp;new&nbsp;sub&nbsp;class&nbsp;of&nbsp;GeoCanvas&nbsp;that&nbsp;can&nbsp;handle&nbsp;only&nbsp;drawing&nbsp;to&nbsp;a&nbsp;System.Drawing.Graphics&nbsp;object&nbsp;and&nbsp;not&nbsp;need&nbsp;a&nbsp;bitmap&nbsp;to&nbsp;start&nbsp;with.&nbsp;&nbsp;But&nbsp;it&nbsp;appears&nbsp;that&nbsp;the&nbsp;drawing&nbsp;logic&nbsp;for&nbsp;a&nbsp;Graphics&nbsp;object&nbsp;is&nbsp;contained&nbsp;in&nbsp;the&nbsp;Gdi&nbsp;canvas&nbsp;and&nbsp;not&nbsp;in&nbsp;the&nbsp;GeoCanvas&nbsp;base&nbsp;class.&nbsp;&nbsp;Which&nbsp;means&nbsp;all&nbsp;that&nbsp;logic&nbsp;can’t&nbsp;be&nbsp;reused&nbsp;and&nbsp;would&nbsp;need&nbsp;to&nbsp;be&nbsp;recreated&nbsp;and&nbsp;not&nbsp;having&nbsp;to&nbsp;handle&nbsp;that&nbsp;drawing&nbsp;is&nbsp;why&nbsp;I’m&nbsp;using&nbsp;MapSuite&nbsp;to&nbsp;begin&nbsp;with.&nbsp;  
&nbsp;&nbsp;  
&nbsp;I&nbsp;would&nbsp;be&nbsp;happy&nbsp;to&nbsp;attempt&nbsp;my&nbsp;own&nbsp;subclass&nbsp;of&nbsp;GeoCanvas&nbsp;but&nbsp;any&nbsp;pointers&nbsp;on&nbsp;what&nbsp;you&nbsp;need&nbsp;to&nbsp;do&nbsp;to&nbsp;create&nbsp;a&nbsp;geo&nbsp;canvas&nbsp;subclass&nbsp;would&nbsp;be&nbsp;very&nbsp;helpful.

---

<div class="post-metadata">

**Author:** ![ThinkGeo](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/thinkgeo/32/25029_2.png) [@ThinkGeo](https://community.thinkgeo.com/u/ThinkGeo)\
**Post date:** [August 15, 2011, 11:53am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/11 "2011-08-15T11:53:11Z")

</div>

Brian,&nbsp;  
&nbsp;&nbsp;  
&nbsp;Thanks&nbsp;for&nbsp;you&nbsp;understanding&nbsp;this.&nbsp;  
&nbsp;&nbsp;  
&nbsp;Please&nbsp;refer&nbsp;to&nbsp;PdfGeoCanvas&nbsp;which&nbsp;can&nbsp;guide&nbsp;you&nbsp;how&nbsp;to&nbsp;create&nbsp;a&nbsp;custom&nbsp;GeoCanvas.&nbsp;  
&nbsp;&nbsp;  
&nbsp;Thanks,&nbsp;  
&nbsp;James

---

<div class="post-metadata">

**Author:** ![Elm](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/e/57b2e6/32.png) [@Elm](https://community.thinkgeo.com/u/Elm)\
**Post date:** [December 26, 2011, 10:30am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/12 "2011-12-26T10:30:55Z")

</div>

` Posted By Brian on 08-12-2011 09:29 AM Hi James, Thanks for the suggestion, but I believe the problem is it appears to me that  your GdiPlusGeoCanvas must have a Bitmap object to draw to.  Because only your GeoImage objects or Bitmaps are accepted by the BeginDrawing method.  Redrawing a bitmap to vector image does not produce the desired result, because all the layers that have been drawn are already rasterized by the Gdi canvas using a bitmap. It appears to me that only solution to this is a new sub class of GeoCanvas that can handle only drawing to a System.Drawing.Graphics object and not need a bitmap to start with.  But it appears that the drawing logic for a Graphics object is contained in the Gdi canvas and not in the GeoCanvas base class.  Which means all that logic can’t be reused and would need to be recreated and not having to handle that drawing is why I’m using MapSuite to begin with. I would be happy to attempt my own subclass of GeoCanvas but any pointers on what you need to do to create a geo canvas subclass would be very helpful. `

I&nbsp;am&nbsp;looking&nbsp;for&nbsp;the&nbsp;exact&nbsp;same&nbsp;functionality.&nbsp;Exporting&nbsp;to&nbsp;a&nbsp;vector&nbsp;format&nbsp;instead&nbsp;of&nbsp;a&nbsp;bitmap&nbsp;format.&nbsp;Have&nbsp;you&nbsp;found&nbsp;a&nbsp;solution&nbsp;for&nbsp;this?

&nbsp;

---

<div class="post-metadata">

**Author:** ![ThinkGeo](https://community.thinkgeo.com/user_avatar/community.thinkgeo.com/thinkgeo/32/25029_2.png) [@ThinkGeo](https://community.thinkgeo.com/u/ThinkGeo)\
**Post date:** [December 27, 2011, 7:38pm UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/13 "2011-12-27T19:38:57Z")

</div>

&nbsp;Elm,

&nbsp;  
Have&nbsp;you&nbsp;tried&nbsp;to&nbsp;create&nbsp;your&nbsp;own&nbsp;subclass&nbsp;of&nbsp;GeoCanvas?&nbsp;As&nbsp;my&nbsp;suggestion,&nbsp;you&nbsp;can&nbsp;look&nbsp;at&nbsp;PdfGeoCavnas&nbsp;which&nbsp;be&nbsp;contained&nbsp;in&nbsp;Pdf&nbsp;extension.&nbsp;gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/16/aft/5280/afv/topic/Default.aspx  
&nbsp;Let&nbsp;me&nbsp;know&nbsp;if&nbsp;you&nbsp;have&nbsp;questions.  
&nbsp;  
Thanks,  
James

---

<div class="post-metadata">

**Author:** ![Elm](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/e/57b2e6/32.png) [@Elm](https://community.thinkgeo.com/u/Elm)\
**Post date:** [December 30, 2011, 4:52am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/14 "2011-12-30T04:52:27Z")

</div>

I&nbsp;don't&nbsp;have&nbsp;the&nbsp;source&nbsp;of&nbsp;the&nbsp;PDFGeoCanvas&nbsp;object&nbsp;so&nbsp;I&nbsp;can't&nbsp;see&nbsp;how&nbsp;to&nbsp;make&nbsp;my&nbsp;own&nbsp;class.

&nbsp;

What&nbsp;is&nbsp;the&nbsp;nativeImage&nbsp;of&nbsp;BeginDrawing?&nbsp;Is&nbsp;there&nbsp;an&nbsp;example&nbsp;somewhere&nbsp;of&nbsp;creating&nbsp;your&nbsp;own&nbsp;extension&nbsp;of&nbsp;GoeCanvas?

&nbsp;

Thanks!

---

<div class="post-metadata">

**Author:** ![Gary2](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/g/49beb7/32.png) [@Gary2](https://community.thinkgeo.com/u/Gary2)\
**Post date:** [December 30, 2011, 2:40pm UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/15 "2011-12-30T14:40:13Z")

</div>

&nbsp;Hello&nbsp;Elm,

&nbsp;  
Attached&nbsp;sample&nbsp;is&nbsp;a&nbsp;demo&nbsp;that&nbsp;shows&nbsp;how&nbsp;to&nbsp;inheriting&nbsp;the&nbsp;GeoCanvas&nbsp;and&nbsp;create&nbsp;your&nbsp;own&nbsp;GeoCanvas,&nbsp;this&nbsp;sample&nbsp;converts&nbsp;a&nbsp;line&nbsp;based&nbsp;shape&nbsp;(we&nbsp;use&nbsp;Austin&nbsp;Streets&nbsp;data&nbsp;in&nbsp;this&nbsp;sample,&nbsp;you&nbsp;can&nbsp;find&nbsp;it&nbsp;in&nbsp;the&nbsp;sample&nbsp;data)&nbsp;to&nbsp;KML,&nbsp;you&nbsp;can&nbsp;refer&nbsp;this&nbsp;and&nbsp;write&nbsp;your&nbsp;own&nbsp;function&nbsp;to&nbsp;export&nbsp;the&nbsp;vector&nbsp;format.  
&nbsp;  
I&nbsp;hope&nbsp;this&nbsp;can&nbsp;help&nbsp;you.  
&nbsp;  
Regards,  
&nbsp;  
Gary  
  
[KML\_Demo.zip](https://community.thinkgeo.com/uploads/default/original/2X/4/48fb1ff25e3afab8e8fef18ea8235846f8746b55.zip) (15.1 KB)

---

<div class="post-metadata">

**Author:** ![Joe1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/j/d26b3c/32.png) [@Joe1](https://community.thinkgeo.com/u/Joe1)\
**Post date:** [December 7, 2012, 11:45am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/16 "2012-12-07T11:45:27Z")

</div>

Brian,

Did&nbsp;you&nbsp;ever&nbsp;come&nbsp;to&nbsp;a&nbsp;resolution?&nbsp;&nbsp;I&nbsp;am&nbsp;also&nbsp;trying&nbsp;to&nbsp;get&nbsp;vector&nbsp;images&nbsp;out&nbsp;of&nbsp;ThinkGeo.

Thanks.

---

<div class="post-metadata">

**Author:** ![Gary2](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/g/49beb7/32.png) [@Gary2](https://community.thinkgeo.com/u/Gary2)\
**Post date:** [December 10, 2012, 2:45am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/17 "2012-12-10T02:45:41Z")

</div>

Hello&nbsp;Joe,&nbsp;  
&nbsp;&nbsp;  
&nbsp;Have&nbsp;you&nbsp;try&nbsp;the&nbsp;sample&nbsp;above?&nbsp;Meet&nbsp;any&nbsp;problem?&nbsp;  
&nbsp;&nbsp;  
&nbsp;Regards,&nbsp;  
&nbsp;&nbsp;  
&nbsp;Gary

---

<div class="post-metadata">

**Author:** ![Joe1](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/j/d26b3c/32.png) [@Joe1](https://community.thinkgeo.com/u/Joe1)\
**Post date:** [December 12, 2012, 7:50am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/18 "2012-12-12T07:50:27Z")

</div>

I&nbsp;didn't&nbsp;try&nbsp;the&nbsp;sample&nbsp;above,&nbsp;but&nbsp;I&nbsp;did&nbsp;find&nbsp;the&nbsp;solution&nbsp;I&nbsp;was&nbsp;looking&nbsp;for&nbsp;here:

[gis.thinkgeo.com/Support/Discussion...fault.aspx](http://gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/21/aft/10844/afv/topic/Default.aspx)

Thanks,

Joe

---

<div class="post-metadata">

**Author:** ![Ryan](https://community.thinkgeo.com/letter_avatar_proxy/v4/letter/r/a8b319/32.png) [@Ryan](https://community.thinkgeo.com/u/Ryan)\
**Post date:** [December 12, 2012, 9:19am UTC](https://community.thinkgeo.com/t/drawing-to-a-vector-image-format/1763/19 "2012-12-12T09:19:57Z")

</div>

Hi&nbsp;Joe,&nbsp;&nbsp;  
&nbsp;&nbsp;  
&nbsp;Thanks&nbsp;for&nbsp;your&nbsp;feedback&nbsp;and&nbsp;please&nbsp;let&nbsp;us&nbsp;know&nbsp;if&nbsp;you&nbsp;have&nbsp;additional&nbsp;questions.
