mail-archives/gtk-sharp-list/attachments/20090419/1443e0de/attachment-0001.html

119 строки
10 KiB
HTML
Исходник Постоянная ссылка Ответственный История

Этот файл содержит невидимые символы Юникода!

Этот файл содержит невидимые символы Юникода, которые могут быть отображены не так, как показано ниже. Если это намеренно, можете спокойно проигнорировать это предупреждение. Используйте кнопку Экранировать, чтобы показать скрытые символы.

<tt>
Alan-&lt;br&gt;&lt;br&gt;The&nbsp;drawing&nbsp;code&nbsp;(in&nbsp;FrameDisplay.DrawAxes())&nbsp;should&nbsp;really&nbsp;called&nbsp;on&nbsp;the&nbsp;expose&nbsp;event&nbsp;handler&nbsp;for&nbsp;FrameDisplay.&nbsp;This&nbsp;way,&nbsp;it&nbsp;will&nbsp;get&nbsp;called&nbsp;whenever&nbsp;the&nbsp;control&nbsp;needs&nbsp;to&nbsp;be&nbsp;redrawn.&nbsp;Just&nbsp;put&lt;br&gt;&lt;br&gt;ExposeEvent&nbsp;+=&nbsp;HandleExposeEvent;&lt;br&gt;<br>
&lt;br&gt;into&nbsp;the&nbsp;FrameDisplay&nbsp;constructor,&nbsp;then&nbsp;put&nbsp;a&nbsp;call&nbsp;to&nbsp;DrawAxes()&nbsp;in&nbsp;the&nbsp;handler:&lt;br&gt;&lt;br&gt;void&nbsp;HandleExposeEvent(object&nbsp;o,&nbsp;Gtk.ExposeEventArgs&nbsp;args)&lt;br&gt;{&lt;br&gt;   &nbsp;DrawAxes();&lt;br&gt;}&lt;br&gt;&lt;br&gt;Hope&nbsp;this&nbsp;helps.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div&nbsp;class=&quot;gmail_quote&quot;&gt;<br>
On&nbsp;Sun,&nbsp;Apr&nbsp;19,&nbsp;2009&nbsp;at&nbsp;2:55&nbsp;PM,&nbsp;alan&nbsp;battersby&nbsp;&lt;span&nbsp;dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a&nbsp;href=&quot;mailto:alan.battersby@ntlworld.com&quot;&gt;alan.battersby@ntlworld.com&lt;/a&gt;&amp;gt;&lt;/span&gt;&nbsp;wrote:&lt;br&gt;&lt;blockquote&nbsp;class=&quot;gmail_quote&quot;&nbsp;style=&quot;border-left:&nbsp;1px&nbsp;solid&nbsp;rgb(204,&nbsp;204,&nbsp;204);&nbsp;margin:&nbsp;0pt&nbsp;0pt&nbsp;0pt&nbsp;0.8ex;&nbsp;padding-left:&nbsp;1ex;&quot;&gt;<br>
Hi,&lt;br&gt;<br>
I&nbsp;have&nbsp;a&nbsp;problem,&nbsp;I&nbsp;have&nbsp;a&nbsp;dialog&nbsp;containing&nbsp;a&nbsp;widget&nbsp;I&nbsp;wrote&nbsp;to&nbsp;display&lt;br&gt;<br>
axis&nbsp;information.&nbsp;In&nbsp;turn&nbsp;this&nbsp;widget&nbsp;contains&nbsp;another&nbsp;widget&nbsp;to&nbsp;draw&lt;br&gt;<br>
the&nbsp;axes&nbsp;concerned&nbsp;in&nbsp;a&nbsp;drawingarea.&nbsp;When&nbsp;I&nbsp;run&nbsp;the&nbsp;dialog,&nbsp;the&nbsp;drawing&lt;br&gt;<br>
initially&nbsp;appears&nbsp;but&nbsp;then&nbsp;is&nbsp;cleared.&nbsp;When&nbsp;I&nbsp;click&nbsp;on&nbsp;a&nbsp;button&nbsp;to&lt;br&gt;<br>
rotate&nbsp;the&nbsp;axes&nbsp;then&nbsp;drawing&nbsp;appears&nbsp;again&nbsp;and&nbsp;stays&nbsp;visible.&nbsp;So&nbsp;could&lt;br&gt;<br>
someone&nbsp;suggest&nbsp;what&nbsp;I&nbsp;am&nbsp;doing&nbsp;wrong&nbsp;or&nbsp;how&nbsp;I&nbsp;can&nbsp;stop&nbsp;the&nbsp;drawingarea&lt;br&gt;<br>
from&nbsp;being&nbsp;cleared&nbsp;initially.&nbsp; Is&nbsp;it&nbsp;being&nbsp;cleared&nbsp;when&nbsp;I&nbsp;run&nbsp;the&nbsp;Dialog?&lt;br&gt;<br>
&lt;br&gt;<br>
Thanks&nbsp;any&nbsp;help&nbsp;would&nbsp;be&nbsp;appreciated&nbsp;as&nbsp;Ive&nbsp;spent&nbsp;all&nbsp;afternoon&nbsp;trying&lt;br&gt;<br>
to&nbsp;solve&nbsp;this,&lt;br&gt;<br>
Alan&lt;br&gt;<br>
&lt;br&gt;<br>
Code&nbsp;fragments&nbsp;are&lt;br&gt;<br>
&lt;br&gt;<br>
public&nbsp;partial&nbsp;class&nbsp;AxismapDialog&nbsp;:&nbsp;Gtk.Dialog&lt;br&gt;<br>
{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public&nbsp;AxisMap&nbsp;AxisMap&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;axismapdisplay.AxisMap;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; axismapdisplay.AxisMap&nbsp;=&nbsp;value;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
 }&lt;br&gt;<br>
&lt;br&gt;<br>
public&nbsp;partial&nbsp;class&nbsp;AxismapDisplay&nbsp;:&nbsp;Gtk.Bin&lt;br&gt;<br>
 {&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; AxisMap&nbsp;_map;&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; public&nbsp;AxisMap&nbsp;AxisMap&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;_map;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _map&nbsp;=&nbsp;value;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;code&nbsp;to&nbsp;set&nbsp;UI&nbsp;textfields&nbsp;etc&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp;SHOULD&nbsp;DRAW&nbsp;HERE&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; framedisplay1.Frame&nbsp;=&nbsp;_map.Frame;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; framedisplay1.DrawAxes();&nbsp; &nbsp; &nbsp;//&nbsp;put&nbsp;this&nbsp;in&nbsp;out&nbsp;of&lt;br&gt;<br>
desperation&nbsp;shouldn&amp;#39;t&nbsp;need&nbsp;it&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp;in&nbsp;widget&nbsp;I&nbsp;have&nbsp;a&nbsp;buttons&nbsp;to&nbsp;rotate&nbsp;the&nbsp;axes&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; protected&nbsp;virtual&nbsp;void&nbsp;OnXrotBTNClicked&nbsp;(object&nbsp;sender,&lt;br&gt;<br>
System.EventArgs&nbsp;e)&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _map.Frame.Rotate90(AXIS.X);&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; framedisplay1.DrawAxes();&nbsp; &nbsp; &nbsp; //&nbsp;this&nbsp;works&nbsp;ok&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
 }&lt;br&gt;<br>
&lt;br&gt;<br>
public&nbsp;partial&nbsp;class&nbsp;FrameDisplay&nbsp;:&nbsp;Gtk.Bin&lt;br&gt;<br>
 {&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Frame&nbsp;_frame;&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; public&nbsp;Frame&nbsp;Frame&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;_frame;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set&nbsp;{&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _frame&nbsp;=&nbsp;value;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DrawAxes();&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public&nbsp;void&nbsp;DrawAxes()&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; {&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if&nbsp;(_frame&nbsp;==&nbsp;null)&nbsp;return;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawingarea.GdkWindow.Clear();&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; using&nbsp;(Context&nbsp;ct&nbsp;=&lt;br&gt;<br>
Gdk.CairoHelper.Create(drawingarea.GdkWindow))&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp;now&nbsp;scale&nbsp;window&nbsp;and&nbsp;centre&nbsp;to&nbsp;origin&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int&nbsp;height&nbsp;=&nbsp;0,width&nbsp;=&nbsp;0;&lt;br&gt;<br>
&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawingarea.GdkWindow.GetSize(out&nbsp;width,&nbsp;out&nbsp;height);&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; l&nbsp;=&nbsp;(float)Math.Min(width/2,height/2);&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ct.Translate(width/2,height/2);&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp;should&nbsp;be&nbsp;centred&nbsp;now&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp;first&nbsp;x&nbsp;axis&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ct.Color&nbsp;=&nbsp;new&nbsp;Cairo.Color(1,0,0);&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawline(_frame.X,ct,l,AXIS.X.ToString());&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp;now&nbsp;y&nbsp;axis&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ct.Color&nbsp;=&nbsp;new&nbsp;Cairo.Color(0,1,0);&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawline(_frame.Y,ct,l,AXIS.Y.ToString());&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp;now&nbsp;z&nbsp;axis&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ct.Color&nbsp;=&nbsp;new&nbsp;Cairo.Color(0,0,1);&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; drawline(_frame.Z,ct,l,AXIS.Z.ToString());&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
}&lt;br&gt;<br>
&lt;br&gt;<br>
//in&nbsp;main&nbsp;user&nbsp;window&nbsp;have&nbsp;a&nbsp;button&nbsp;to&nbsp;create&nbsp;and&nbsp;display&nbsp;the&nbsp;dialog.&lt;br&gt;<br>
protected&nbsp;virtual&nbsp;void&nbsp;OnAxismapbtnClicked&nbsp;(object&nbsp;sender,&lt;br&gt;<br>
System.EventArgs&nbsp;e)&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; {&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AxismapDialog&nbsp;amd&nbsp;=&nbsp;new&nbsp;AxismapDialog();&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amd.AxisMap&nbsp;=&nbsp;_codegen.AxisMap;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if&nbsp;(amd.Run()&nbsp;==&nbsp;(int)ResponseType.Ok)&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _codegen.AxisMap&nbsp;=&nbsp;amd.AxisMap;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amd.Destroy();&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; axismaplabel.Text&nbsp;=&nbsp;_codegen.AxisMap.ShortString;&lt;br&gt;<br>
&nbsp; &nbsp; &nbsp; &nbsp; }&lt;br&gt;<br>
&lt;br&gt;<br>
Dont&nbsp;know&nbsp;if&nbsp;this&nbsp;enough&nbsp;information&nbsp;to&nbsp;help.&lt;br&gt;<br>
_______________________________________________&lt;br&gt;<br>
Gtk-sharp-list&nbsp;maillist&nbsp; -&nbsp; &lt;a&nbsp;href=&quot;mailto:Gtk-sharp-list@lists.ximian.com&quot;&gt;Gtk-sharp-list@lists.ximian.com&lt;/a&gt;&lt;br&gt;<br>
&lt;a&nbsp;href=&quot;http://lists.ximian.com/mailman/listinfo/gtk-sharp-list&quot;&nbsp;target=&quot;_blank&quot;&gt;http://lists.ximian.com/mailman/listinfo/gtk-sharp-list&lt;/a&gt;&lt;br&gt;<br>
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;<br>
</tt>