EDN Admin
Well-known member
I use DrawImageUnscaled<i> </i>with a bitmap for drawing the text
inside.
That text bitmap will be inserted into a transformed(scaled) bitmap.
Normally, <i>DrawImageUnscaled</i> should Draw an <i>Unscaled</i> Image...
<i><b>MSDN </b>:</i>
<div style="background-color:rgb(255, 204, 102)" class=majorTitle>.NET Framework Class Library <div style="background-color:rgb(255, 204, 102)" class=title>Graphics<font class=cs>.</font><b>DrawImageUnscaled </b>Method<div class=summary> <i><b>Draws</b> the specified <b>image using its original</b> physical <b>size </b>at the location specified by a coordinate pair.
</i>
<p style="background-color:rgb(255, 204, 102) But this is not the case....
<table style="border-width:0px;margin:2px 0px;width:99%;border-collapse:collapse;background-color:rgb(255, 255, 255)" cellpadding=0 cellspacing=0><tbody><tr><td><nobr>56</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px DrawText(</font><font style="color:blue string</font><font style="font-size:11px text, Font font, PointF point, Color color) </font></td></tr><tr><td><nobr>57</nobr></td><td> { </td></tr><tr><td><nobr>58</nobr></td><td style="background-color:rgb(247, 247, 247) Bitmap bitmap = <font style="color:blue new</font><font style="font-size:11px Bitmap(160, 50); </font></td></tr><tr><td><nobr>59</nobr></td><td> Graphics g = Graphics.FromImage(bitmap); </td></tr><tr><td><nobr>60</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px (Pen pen = </font><font style="color:blue new</font><font style="font-size:11px Pen(color)) </font></td></tr><tr><td><nobr>61</nobr></td><td> { </td></tr><tr><td><nobr>62</nobr></td><td style="background-color:rgb(247, 247, 247) g.DrawString(text, font, pen.Brush, 0f, 0f); </td></tr><tr><td><nobr>63</nobr></td><td> } </td></tr><tr><td><nobr>64</nobr></td><td style="background-color:rgb(247, 247, 247) Point intPoint = <font style="color:blue new</font><font style="font-size:11px Point((</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.X, 0), (</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.Y, 0)); </font></td></tr><tr><td><nobr>65</nobr></td><td> <font style="color:green // draw it to the screen bitmap</font><font style="font-size:11px </font></td></tr><tr><td><nobr>66</nobr></td><td style="background-color:rgb(247, 247, 247) <b>graphics.DrawImageUnscaled(bitmap, intPoint); </b></td></tr><tr><td><nobr>67</nobr></td><td> }</td></tr></tbody></table>
<b><font style="font-size:14px The context:</font></b>
In this example well use a bitmap to draw a triangle where a point has a description (to show in the picture);
In order to verify this behavior, you should have a Windows Project with a Form names <b>Form1 </b>(by default).
This form should subscribe to <font color="#3366ff Form1_Load</font> and <font style="font-size:11px" color="#3366ff Form1_ClientSizeChanged</font> events.
NB!
<font style="font-size:10px We should include the text into the bitmap, and not to draw it simply to the screen, the bitmap is used for save the image on the clipboard or a file...</font>
<div style="overflow:auto;background-color:white;line-height:100% ! important;font-family:Courier New;font-size:11px <table style="border-width:0px;margin:2px 0px;width:99%;border-collapse:collapse;background-color:rgb(255, 255, 255)" cellpadding=0 cellspacing=0><col style="border-right:1px solid gray;font-family:Courier New;font-size:11px;background-color:rgb(238, 238, 238);padding-right:5px;padding-left:10px;width:5px;color:gray;text-align:right;vertical-align:top <col style="font-family:Courier New;font-size:11px;padding-left:10px;white-space:nowrap <tbody><tr><td><nobr>1</nobr></td><td><font style="font-size:11px </font><font style="color:blue using</font><font style="font-size:11px System; </font></td></tr><tr><td><nobr>2</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px System.Drawing; </font></td></tr><tr><td><nobr>3</nobr></td><td><font style="color:blue using</font><font style="font-size:11px System.Drawing.Drawing2D; </font></td></tr><tr><td><nobr>4</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px System.Windows.Forms; </font></td></tr><tr><td><nobr>5</nobr></td><td> </td></tr><tr><td><nobr>6</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue namespace</font><font style="font-size:11px WindowsFormsApplication2 </font></td></tr><tr><td><nobr>7</nobr></td><td>{ </td></tr><tr><td><nobr>8</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue public</font><font style="font-size:11px partial </font><font style="color:blue class</font><font style="font-size:11px Form1 : Form </font></td></tr><tr><td><nobr>9</nobr></td><td> { </td></tr><tr><td><nobr>10</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue public</font><font style="font-size:11px Form1() </font></td></tr><tr><td><nobr>11</nobr></td><td> { </td></tr><tr><td><nobr>12</nobr></td><td style="background-color:rgb(247, 247, 247) InitializeComponent(); </td></tr><tr><td><nobr>13</nobr></td><td> } </td></tr><tr><td><nobr>14</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>15</nobr></td><td> <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px Form1_Load(</font><font style="color:blue object</font><font style="font-size:11px sender, EventArgs e) </font></td></tr><tr><td><nobr>16</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>17</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .SetStyle(ControlStyles.ResizeRedraw, </font><font style="color:blue true</font><font style="font-size:11px ); </font></td></tr><tr><td><nobr>18</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>19</nobr></td><td> </td></tr><tr><td><nobr>20</nobr></td><td style="background-color:rgb(247, 247, 247) Graphics graphics; </td></tr><tr><td><nobr>21</nobr></td><td> </td></tr><tr><td><nobr>22</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue protected</font><font style="font-size:11px </font><font style="color:blue override</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px OnPaint(PaintEventArgs e) </font></td></tr><tr><td><nobr>23</nobr></td><td> { </td></tr><tr><td><nobr>24</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue base</font><font style="font-size:11px .OnPaint(e); </font></td></tr><tr><td><nobr>25</nobr></td><td> </td></tr><tr><td><nobr>26</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue if</font><font style="font-size:11px (</font><font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height != 0) </font></td></tr><tr><td><nobr>27</nobr></td><td> { </td></tr><tr><td><nobr>28</nobr></td><td style="background-color:rgb(247, 247, 247) Bitmap bitmap = <font style="color:blue new</font><font style="font-size:11px Bitmap(</font><font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Width, </font></td></tr><tr><td><nobr>29</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height); </font></td></tr><tr><td><nobr>30</nobr></td><td style="background-color:rgb(247, 247, 247) graphics = Graphics.FromImage(bitmap); </td></tr><tr><td><nobr>31</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .ScaleImage(); </font></td></tr><tr><td><nobr>32</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>33</nobr></td><td> GraphicsPath path = <font style="color:blue new</font><font style="font-size:11px GraphicsPath(); </font></td></tr><tr><td><nobr>34</nobr></td><td style="background-color:rgb(247, 247, 247) path.AddPolygon(<font style="color:blue new</font><font style="font-size:11px PointF[] </font></td></tr><tr><td><nobr>35</nobr></td><td> { </td></tr><tr><td><nobr>36</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue new</font><font style="font-size:11px PointF(15, 15), </font></td></tr><tr><td><nobr>37</nobr></td><td> <font style="color:blue new</font><font style="font-size:11px PointF(100, 60), </font></td></tr><tr><td><nobr>38</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue new</font><font style="font-size:11px PointF(50, 210) </font></td></tr><tr><td><nobr>39</nobr></td><td> }); </td></tr><tr><td><nobr>40</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>41</nobr></td><td> <font style="color:blue using</font><font style="font-size:11px (Pen pen = </font><font style="color:blue new</font><font style="font-size:11px Pen(Color.Red)) </font></td></tr><tr><td><nobr>42</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>43</nobr></td><td> graphics.DrawPath(pen, path); </td></tr><tr><td><nobr>44</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>45</nobr></td><td> </td></tr><tr><td><nobr>46</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue this</font><font style="font-size:11px .DrawText(</font><font style="color:blue "this Is A String in the Bitmap"</font><font style="font-size:11px , </font></td></tr><tr><td><nobr>47</nobr></td><td> <font style="color:blue new</font><font style="font-size:11px Font(</font><font style="color:blue "Arial"</font><font style="font-size:11px , 10), path.PathPoints[1], Color.Red); </font></td></tr><tr><td><nobr>48</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>49</nobr></td><td> </td></tr><tr><td><nobr>50</nobr></td><td style="background-color:rgb(247, 247, 247) e.Graphics.DrawImage(bitmap, 0, 0); </td></tr><tr><td><nobr>51</nobr></td><td> </td></tr><tr><td><nobr>52</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green /*</font></td></tr><tr><td><nobr>53</nobr></td><td><font style="color:green e.Graphics.DrawString("this Is A String in the Panel",</font></td></tr><tr><td><nobr>54</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green new Font("Arial", 10), Brushes.Blue,</font></td></tr><tr><td><nobr>55</nobr></td><td><font style="color:green GetScreenPoint(path.PathPoints[1]));</font></td></tr><tr><td><nobr>56</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green */</font><font style="font-size:11px </font></td></tr><tr><td><nobr>57</nobr></td><td> } </td></tr><tr><td><nobr>58</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>59</nobr></td><td> </td></tr><tr><td><nobr>60</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px DrawText(</font><font style="color:blue string</font><font style="font-size:11px text, Font font, PointF point, Color color) </font></td></tr><tr><td><nobr>61</nobr></td><td> { </td></tr><tr><td><nobr>62</nobr></td><td style="background-color:rgb(247, 247, 247) Bitmap bitmap = <font style="color:blue new</font><font style="font-size:11px Bitmap(160, 50); </font></td></tr><tr><td><nobr>63</nobr></td><td> Graphics g = Graphics.FromImage(bitmap); </td></tr><tr><td><nobr>64</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px (Pen pen = </font><font style="color:blue new</font><font style="font-size:11px Pen(color)) </font></td></tr><tr><td><nobr>65</nobr></td><td> { </td></tr><tr><td><nobr>66</nobr></td><td style="background-color:rgb(247, 247, 247) g.DrawString(text, font, pen.Brush, 0f, 0f); </td></tr><tr><td><nobr>67</nobr></td><td> } </td></tr><tr><td><nobr>68</nobr></td><td style="background-color:rgb(247, 247, 247) Point intPoint = <font style="color:blue new</font><font style="font-size:11px Point((</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.X, 0), (</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.Y, 0)); </font></td></tr><tr><td><nobr>69</nobr></td><td> <font style="color:green // draw the TextBitmap to the ScreenBitmap</font><font style="font-size:11px </font></td></tr><tr><td><nobr>70</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green // the text should remain unchanged (unscaled and unreflected)</font><font style="font-size:11px </font></td></tr><tr><td><nobr>71</nobr></td><td> graphics.DrawImageUnscaled(bitmap, <font style="color:blue new</font><font style="font-size:11px Rectangle(intPoint, bitmap.Size)); </font></td></tr><tr><td><nobr>72</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>73</nobr></td><td> </td></tr><tr><td><nobr>74</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue float</font><font style="font-size:11px mdx, mdy, mScale; </font></td></tr><tr><td><nobr>75</nobr></td><td> <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px ScaleImage() </font></td></tr><tr><td><nobr>76</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>77</nobr></td><td> <font style="color:blue float</font><font style="font-size:11px scale = </font><font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height / 230f, </font></td></tr><tr><td><nobr>78</nobr></td><td style="background-color:rgb(247, 247, 247) dx = -10f, </td></tr><tr><td><nobr>79</nobr></td><td> dy = 15f; </td></tr><tr><td><nobr>80</nobr></td><td style="background-color:rgb(247, 247, 247) mdx = dx; </td></tr><tr><td><nobr>81</nobr></td><td> mdy = dy; </td></tr><tr><td><nobr>82</nobr></td><td style="background-color:rgb(247, 247, 247) mScale = scale; </td></tr><tr><td><nobr>83</nobr></td><td> Matrix transformMatrix = <font style="color:blue new</font><font style="font-size:11px Matrix( </font></td></tr><tr><td><nobr>84</nobr></td><td style="background-color:rgb(247, 247, 247) mScale, 0, </td></tr><tr><td><nobr>85</nobr></td><td> 0, -mScale, </td></tr><tr><td><nobr>86</nobr></td><td style="background-color:rgb(247, 247, 247) mdx, <font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height - mdy); </font></td></tr><tr><td><nobr>87</nobr></td><td> </td></tr><tr><td><nobr>88</nobr></td><td style="background-color:rgb(247, 247, 247) graphics.Transform = transformMatrix; </td></tr><tr><td><nobr>89</nobr></td><td> } </td></tr><tr><td><nobr>90</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>91</nobr></td><td> PointF GetScreenPoint(PointF drawingPoint) </td></tr><tr><td><nobr>92</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>93</nobr></td><td> PointF screenPoint = <font style="color:blue new</font><font style="font-size:11px PointF(); </font></td></tr><tr><td><nobr>94</nobr></td><td style="background-color:rgb(247, 247, 247) screenPoint.X = drawingPoint.X * mScale; </td></tr><tr><td><nobr>95</nobr></td><td> screenPoint.Y = <font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height - drawingPoint.Y * mScale; </font></td></tr><tr><td><nobr>96</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue return</font><font style="font-size:11px screenPoint; </font></td></tr><tr><td><nobr>97</nobr></td><td> } </td></tr><tr><td><nobr>98</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>99</nobr></td><td> <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px Form1_ClientSizeChanged(</font><font style="color:blue object</font><font style="font-size:11px sender, EventArgs e) </font></td></tr><tr><td><nobr>100</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>101</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .Invalidate(); </font></td></tr><tr><td><nobr>102</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>103</nobr></td><td> } </td></tr><tr><td><nobr>104</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr></tbody></table>
<hr class=sig>Best regards,
Sergiu
View the full article
inside.
That text bitmap will be inserted into a transformed(scaled) bitmap.
Normally, <i>DrawImageUnscaled</i> should Draw an <i>Unscaled</i> Image...
<i><b>MSDN </b>:</i>
<div style="background-color:rgb(255, 204, 102)" class=majorTitle>.NET Framework Class Library <div style="background-color:rgb(255, 204, 102)" class=title>Graphics<font class=cs>.</font><b>DrawImageUnscaled </b>Method<div class=summary> <i><b>Draws</b> the specified <b>image using its original</b> physical <b>size </b>at the location specified by a coordinate pair.
</i>
<p style="background-color:rgb(255, 204, 102) But this is not the case....
<table style="border-width:0px;margin:2px 0px;width:99%;border-collapse:collapse;background-color:rgb(255, 255, 255)" cellpadding=0 cellspacing=0><tbody><tr><td><nobr>56</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px DrawText(</font><font style="color:blue string</font><font style="font-size:11px text, Font font, PointF point, Color color) </font></td></tr><tr><td><nobr>57</nobr></td><td> { </td></tr><tr><td><nobr>58</nobr></td><td style="background-color:rgb(247, 247, 247) Bitmap bitmap = <font style="color:blue new</font><font style="font-size:11px Bitmap(160, 50); </font></td></tr><tr><td><nobr>59</nobr></td><td> Graphics g = Graphics.FromImage(bitmap); </td></tr><tr><td><nobr>60</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px (Pen pen = </font><font style="color:blue new</font><font style="font-size:11px Pen(color)) </font></td></tr><tr><td><nobr>61</nobr></td><td> { </td></tr><tr><td><nobr>62</nobr></td><td style="background-color:rgb(247, 247, 247) g.DrawString(text, font, pen.Brush, 0f, 0f); </td></tr><tr><td><nobr>63</nobr></td><td> } </td></tr><tr><td><nobr>64</nobr></td><td style="background-color:rgb(247, 247, 247) Point intPoint = <font style="color:blue new</font><font style="font-size:11px Point((</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.X, 0), (</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.Y, 0)); </font></td></tr><tr><td><nobr>65</nobr></td><td> <font style="color:green // draw it to the screen bitmap</font><font style="font-size:11px </font></td></tr><tr><td><nobr>66</nobr></td><td style="background-color:rgb(247, 247, 247) <b>graphics.DrawImageUnscaled(bitmap, intPoint); </b></td></tr><tr><td><nobr>67</nobr></td><td> }</td></tr></tbody></table>
<b><font style="font-size:14px The context:</font></b>
In this example well use a bitmap to draw a triangle where a point has a description (to show in the picture);
In order to verify this behavior, you should have a Windows Project with a Form names <b>Form1 </b>(by default).
This form should subscribe to <font color="#3366ff Form1_Load</font> and <font style="font-size:11px" color="#3366ff Form1_ClientSizeChanged</font> events.
NB!
<font style="font-size:10px We should include the text into the bitmap, and not to draw it simply to the screen, the bitmap is used for save the image on the clipboard or a file...</font>
<div style="overflow:auto;background-color:white;line-height:100% ! important;font-family:Courier New;font-size:11px <table style="border-width:0px;margin:2px 0px;width:99%;border-collapse:collapse;background-color:rgb(255, 255, 255)" cellpadding=0 cellspacing=0><col style="border-right:1px solid gray;font-family:Courier New;font-size:11px;background-color:rgb(238, 238, 238);padding-right:5px;padding-left:10px;width:5px;color:gray;text-align:right;vertical-align:top <col style="font-family:Courier New;font-size:11px;padding-left:10px;white-space:nowrap <tbody><tr><td><nobr>1</nobr></td><td><font style="font-size:11px </font><font style="color:blue using</font><font style="font-size:11px System; </font></td></tr><tr><td><nobr>2</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px System.Drawing; </font></td></tr><tr><td><nobr>3</nobr></td><td><font style="color:blue using</font><font style="font-size:11px System.Drawing.Drawing2D; </font></td></tr><tr><td><nobr>4</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px System.Windows.Forms; </font></td></tr><tr><td><nobr>5</nobr></td><td> </td></tr><tr><td><nobr>6</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue namespace</font><font style="font-size:11px WindowsFormsApplication2 </font></td></tr><tr><td><nobr>7</nobr></td><td>{ </td></tr><tr><td><nobr>8</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue public</font><font style="font-size:11px partial </font><font style="color:blue class</font><font style="font-size:11px Form1 : Form </font></td></tr><tr><td><nobr>9</nobr></td><td> { </td></tr><tr><td><nobr>10</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue public</font><font style="font-size:11px Form1() </font></td></tr><tr><td><nobr>11</nobr></td><td> { </td></tr><tr><td><nobr>12</nobr></td><td style="background-color:rgb(247, 247, 247) InitializeComponent(); </td></tr><tr><td><nobr>13</nobr></td><td> } </td></tr><tr><td><nobr>14</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>15</nobr></td><td> <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px Form1_Load(</font><font style="color:blue object</font><font style="font-size:11px sender, EventArgs e) </font></td></tr><tr><td><nobr>16</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>17</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .SetStyle(ControlStyles.ResizeRedraw, </font><font style="color:blue true</font><font style="font-size:11px ); </font></td></tr><tr><td><nobr>18</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>19</nobr></td><td> </td></tr><tr><td><nobr>20</nobr></td><td style="background-color:rgb(247, 247, 247) Graphics graphics; </td></tr><tr><td><nobr>21</nobr></td><td> </td></tr><tr><td><nobr>22</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue protected</font><font style="font-size:11px </font><font style="color:blue override</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px OnPaint(PaintEventArgs e) </font></td></tr><tr><td><nobr>23</nobr></td><td> { </td></tr><tr><td><nobr>24</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue base</font><font style="font-size:11px .OnPaint(e); </font></td></tr><tr><td><nobr>25</nobr></td><td> </td></tr><tr><td><nobr>26</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue if</font><font style="font-size:11px (</font><font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height != 0) </font></td></tr><tr><td><nobr>27</nobr></td><td> { </td></tr><tr><td><nobr>28</nobr></td><td style="background-color:rgb(247, 247, 247) Bitmap bitmap = <font style="color:blue new</font><font style="font-size:11px Bitmap(</font><font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Width, </font></td></tr><tr><td><nobr>29</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height); </font></td></tr><tr><td><nobr>30</nobr></td><td style="background-color:rgb(247, 247, 247) graphics = Graphics.FromImage(bitmap); </td></tr><tr><td><nobr>31</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .ScaleImage(); </font></td></tr><tr><td><nobr>32</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>33</nobr></td><td> GraphicsPath path = <font style="color:blue new</font><font style="font-size:11px GraphicsPath(); </font></td></tr><tr><td><nobr>34</nobr></td><td style="background-color:rgb(247, 247, 247) path.AddPolygon(<font style="color:blue new</font><font style="font-size:11px PointF[] </font></td></tr><tr><td><nobr>35</nobr></td><td> { </td></tr><tr><td><nobr>36</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue new</font><font style="font-size:11px PointF(15, 15), </font></td></tr><tr><td><nobr>37</nobr></td><td> <font style="color:blue new</font><font style="font-size:11px PointF(100, 60), </font></td></tr><tr><td><nobr>38</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue new</font><font style="font-size:11px PointF(50, 210) </font></td></tr><tr><td><nobr>39</nobr></td><td> }); </td></tr><tr><td><nobr>40</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>41</nobr></td><td> <font style="color:blue using</font><font style="font-size:11px (Pen pen = </font><font style="color:blue new</font><font style="font-size:11px Pen(Color.Red)) </font></td></tr><tr><td><nobr>42</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>43</nobr></td><td> graphics.DrawPath(pen, path); </td></tr><tr><td><nobr>44</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>45</nobr></td><td> </td></tr><tr><td><nobr>46</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue this</font><font style="font-size:11px .DrawText(</font><font style="color:blue "this Is A String in the Bitmap"</font><font style="font-size:11px , </font></td></tr><tr><td><nobr>47</nobr></td><td> <font style="color:blue new</font><font style="font-size:11px Font(</font><font style="color:blue "Arial"</font><font style="font-size:11px , 10), path.PathPoints[1], Color.Red); </font></td></tr><tr><td><nobr>48</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>49</nobr></td><td> </td></tr><tr><td><nobr>50</nobr></td><td style="background-color:rgb(247, 247, 247) e.Graphics.DrawImage(bitmap, 0, 0); </td></tr><tr><td><nobr>51</nobr></td><td> </td></tr><tr><td><nobr>52</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green /*</font></td></tr><tr><td><nobr>53</nobr></td><td><font style="color:green e.Graphics.DrawString("this Is A String in the Panel",</font></td></tr><tr><td><nobr>54</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green new Font("Arial", 10), Brushes.Blue,</font></td></tr><tr><td><nobr>55</nobr></td><td><font style="color:green GetScreenPoint(path.PathPoints[1]));</font></td></tr><tr><td><nobr>56</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green */</font><font style="font-size:11px </font></td></tr><tr><td><nobr>57</nobr></td><td> } </td></tr><tr><td><nobr>58</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>59</nobr></td><td> </td></tr><tr><td><nobr>60</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px DrawText(</font><font style="color:blue string</font><font style="font-size:11px text, Font font, PointF point, Color color) </font></td></tr><tr><td><nobr>61</nobr></td><td> { </td></tr><tr><td><nobr>62</nobr></td><td style="background-color:rgb(247, 247, 247) Bitmap bitmap = <font style="color:blue new</font><font style="font-size:11px Bitmap(160, 50); </font></td></tr><tr><td><nobr>63</nobr></td><td> Graphics g = Graphics.FromImage(bitmap); </td></tr><tr><td><nobr>64</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue using</font><font style="font-size:11px (Pen pen = </font><font style="color:blue new</font><font style="font-size:11px Pen(color)) </font></td></tr><tr><td><nobr>65</nobr></td><td> { </td></tr><tr><td><nobr>66</nobr></td><td style="background-color:rgb(247, 247, 247) g.DrawString(text, font, pen.Brush, 0f, 0f); </td></tr><tr><td><nobr>67</nobr></td><td> } </td></tr><tr><td><nobr>68</nobr></td><td style="background-color:rgb(247, 247, 247) Point intPoint = <font style="color:blue new</font><font style="font-size:11px Point((</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.X, 0), (</font><font style="color:blue int</font><font style="font-size:11px )Math.Round(point.Y, 0)); </font></td></tr><tr><td><nobr>69</nobr></td><td> <font style="color:green // draw the TextBitmap to the ScreenBitmap</font><font style="font-size:11px </font></td></tr><tr><td><nobr>70</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:green // the text should remain unchanged (unscaled and unreflected)</font><font style="font-size:11px </font></td></tr><tr><td><nobr>71</nobr></td><td> graphics.DrawImageUnscaled(bitmap, <font style="color:blue new</font><font style="font-size:11px Rectangle(intPoint, bitmap.Size)); </font></td></tr><tr><td><nobr>72</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>73</nobr></td><td> </td></tr><tr><td><nobr>74</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue float</font><font style="font-size:11px mdx, mdy, mScale; </font></td></tr><tr><td><nobr>75</nobr></td><td> <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px ScaleImage() </font></td></tr><tr><td><nobr>76</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>77</nobr></td><td> <font style="color:blue float</font><font style="font-size:11px scale = </font><font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height / 230f, </font></td></tr><tr><td><nobr>78</nobr></td><td style="background-color:rgb(247, 247, 247) dx = -10f, </td></tr><tr><td><nobr>79</nobr></td><td> dy = 15f; </td></tr><tr><td><nobr>80</nobr></td><td style="background-color:rgb(247, 247, 247) mdx = dx; </td></tr><tr><td><nobr>81</nobr></td><td> mdy = dy; </td></tr><tr><td><nobr>82</nobr></td><td style="background-color:rgb(247, 247, 247) mScale = scale; </td></tr><tr><td><nobr>83</nobr></td><td> Matrix transformMatrix = <font style="color:blue new</font><font style="font-size:11px Matrix( </font></td></tr><tr><td><nobr>84</nobr></td><td style="background-color:rgb(247, 247, 247) mScale, 0, </td></tr><tr><td><nobr>85</nobr></td><td> 0, -mScale, </td></tr><tr><td><nobr>86</nobr></td><td style="background-color:rgb(247, 247, 247) mdx, <font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height - mdy); </font></td></tr><tr><td><nobr>87</nobr></td><td> </td></tr><tr><td><nobr>88</nobr></td><td style="background-color:rgb(247, 247, 247) graphics.Transform = transformMatrix; </td></tr><tr><td><nobr>89</nobr></td><td> } </td></tr><tr><td><nobr>90</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>91</nobr></td><td> PointF GetScreenPoint(PointF drawingPoint) </td></tr><tr><td><nobr>92</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>93</nobr></td><td> PointF screenPoint = <font style="color:blue new</font><font style="font-size:11px PointF(); </font></td></tr><tr><td><nobr>94</nobr></td><td style="background-color:rgb(247, 247, 247) screenPoint.X = drawingPoint.X * mScale; </td></tr><tr><td><nobr>95</nobr></td><td> screenPoint.Y = <font style="color:blue this</font><font style="font-size:11px .ClientRectangle.Height - drawingPoint.Y * mScale; </font></td></tr><tr><td><nobr>96</nobr></td><td style="background-color:rgb(247, 247, 247) <font style="color:blue return</font><font style="font-size:11px screenPoint; </font></td></tr><tr><td><nobr>97</nobr></td><td> } </td></tr><tr><td><nobr>98</nobr></td><td style="background-color:rgb(247, 247, 247) </td></tr><tr><td><nobr>99</nobr></td><td> <font style="color:blue private</font><font style="font-size:11px </font><font style="color:blue void</font><font style="font-size:11px Form1_ClientSizeChanged(</font><font style="color:blue object</font><font style="font-size:11px sender, EventArgs e) </font></td></tr><tr><td><nobr>100</nobr></td><td style="background-color:rgb(247, 247, 247) { </td></tr><tr><td><nobr>101</nobr></td><td> <font style="color:blue this</font><font style="font-size:11px .Invalidate(); </font></td></tr><tr><td><nobr>102</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr><tr><td><nobr>103</nobr></td><td> } </td></tr><tr><td><nobr>104</nobr></td><td style="background-color:rgb(247, 247, 247) } </td></tr></tbody></table>
<hr class=sig>Best regards,
Sergiu
View the full article