<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>MicrosoftDwayneNeed Forum Rss Feed</title><link>http://www.codeplex.com/MicrosoftDwayneNeed/Thread/List.aspx</link><description>MicrosoftDwayneNeed Forum Rss Description</description><item><title>New Post: RootElement Measure and Arrange</title><link>http://microsoftdwayneneed.codeplex.com/Thread/View.aspx?ThreadId=70472</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Layout across the threads is difficult, because the threads are independent.&amp;nbsp; So, for example, the controls on the worker thread could decide to change size (their content got larger, or the string got longer, or something).&amp;nbsp; You could asynchronously pass that to the UI thread to use as the HostVisual's size.&amp;nbsp; But if layout on the UI thread further constrains the layout size, then you would have to asynchronously pass the constraint back to the worker thread... who would re-run layout and might end up with a different size again...&lt;/p&gt;
&lt;p&gt;The simplest technique is probably more static.&amp;nbsp; Decide on a fixed size for the worker thread's content and use that when measuring the root.&lt;/p&gt;
&lt;p&gt;I'm not aware of any issues with shader effects... Can you post a repro?&lt;/p&gt;&lt;/div&gt;</description><author>DwayneNeed</author><pubDate>Tue, 29 Sep 2009 17:12:04 GMT</pubDate><guid isPermaLink="false">New Post: RootElement Measure and Arrange 20090929051204P</guid></item><item><title>New Post: RootElement Measure and Arrange</title><link>http://microsoftdwayneneed.codeplex.com/Thread/View.aspx?ThreadId=70472</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;i'm trying to get a control to run on a second thread. but i'm having a few issues. the first is that i'm not sure how to get the available size to pass into the measure call that's in the&amp;nbsp;&lt;span style="font-family:Consolas;font-size:x-small"&gt;&lt;span style="font-family:Consolas;font-size:x-small"&gt;RootVisual &lt;/span&gt;&lt;/span&gt;property of the&amp;nbsp;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small"&gt;VisualTargetPresentationSource&lt;span style="color:#000000"&gt; class. maybe it's a problem in my actual control...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small"&gt;&lt;span style="color:#000000"&gt;another issue i'm having is with is when i have an animation using HLSL effects it doesn't want to play with me at all B(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><author>timbot</author><pubDate>Tue, 29 Sep 2009 16:17:35 GMT</pubDate><guid isPermaLink="false">New Post: RootElement Measure and Arrange 20090929041735P</guid></item><item><title>New Post: Input events</title><link>http://www.codeplex.com/MicrosoftDwayneNeed/Thread/View.aspx?ThreadId=45363</link><description>&lt;div style="line-height: normal;"&gt;&lt;p style="margin:0in 0in 0pt"&gt;&lt;span style="font-family:'calibri','sans-serif';color:#1f497d;font-size:11pt"&gt;Unfortunately not.  Win32 handles reporting the WM_MOUSEMOVE (etc) messages to the top-level window.  Win32 does allow a child window to run on a separate thread, but the HostVisual/VisualTarget is not an HWND, so Win32 delivers the messages to the top-level window.  WPF does not route events across the HostVisual/VisualTarget boundary. &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>DwayneNeed</author><pubDate>Wed, 28 Jan 2009 07:20:56 GMT</pubDate><guid isPermaLink="false">New Post: Input events 20090128072056A</guid></item><item><title>New Post: Input events</title><link>http://www.codeplex.com/MicrosoftDwayneNeed/Thread/View.aspx?ThreadId=45363</link><description>&lt;div style="line-height: normal;"&gt;Is there any change to implement mouse events triggering within VisualWrapper?&lt;div&gt;Thanks&lt;/div&gt;&lt;/div&gt;</description><author>DenisVuyka</author><pubDate>Tue, 27 Jan 2009 12:41:45 GMT</pubDate><guid isPermaLink="false">New Post: Input events 20090127124145P</guid></item><item><title>New Post: DownloadCompleted do not refresh Image control?</title><link>http://www.codeplex.com/MicrosoftDwayneNeed/Thread/View.aspx?ThreadId=37220</link><description>&lt;div style="line-height: normal;"&gt;In fact, what surprised me is the fact that the&amp;nbsp;IsDownloading property&amp;nbsp;is never read.&lt;br&gt;
&lt;br&gt;
Here's what sounds logical to me :&lt;br&gt;
&lt;br&gt;
On the first time an Image control needs to be rendered,&amp;nbsp;the first thing the rendering thread should&amp;nbsp;do is to check if the data is available by reading&amp;nbsp;the IsDownloading property. If the data is not available (ie, IsDownloading is True),&amp;nbsp;the DownloadComplete should then be monitored. When the event is fired, the data should be read, and only&amp;nbsp;from this time the bitmap should&amp;nbsp;become&amp;nbsp;&amp;quot;static&amp;quot;, so the next&amp;nbsp;DownloadComplete events are ignored.&lt;br&gt;
&lt;br&gt;
In other words, the object model allows to build custom asynchronous bitmap source (which may become static when fully downloaded), but it seems that there's some tweaks in WPF to only allow the BitmapImage class to work this way...
&lt;/div&gt;</description><author>dummyboy</author><pubDate>Wed, 15 Oct 2008 21:59:17 GMT</pubDate><guid isPermaLink="false">New Post: DownloadCompleted do not refresh Image control? 20081015095917P</guid></item><item><title>New Post: DownloadCompleted do not refresh Image control?</title><link>http://www.codeplex.com/MicrosoftDwayneNeed/Thread/View.aspx?ThreadId=37220</link><description>&lt;div style="line-height: normal;"&gt;Yes, you are encountering the core issue.&amp;nbsp; WPF bitmaps are designed primarily for static bitmaps (simple PNG, JPG, etc).&amp;nbsp; A bitmap is represented as a &amp;quot;resource&amp;quot; and is marshalled to the rendering thread.&amp;nbsp; Once this is done, WPF generally does not refresh the contents again since they are resumed to be static.&amp;nbsp; There are a couple of exceptions, including the WriteableBitmap class.&amp;nbsp; Of course, when you start downloading the bitmap contents on a seperate thread, even &amp;quot;static&amp;quot; bitmaps become effectively &amp;quot;dynamic&amp;quot;.&amp;nbsp; There are a few bugs in WPF that break the scenario where the bitmap download completes &lt;span style="text-decoration:underline"&gt;&lt;strong&gt;after&lt;/strong&gt;&lt;/span&gt; the bitmap has been marshalled to the render thread.&amp;nbsp; The team is aware of the issue, and is working on a fix.
&lt;/div&gt;</description><author>DwayneNeed</author><pubDate>Wed, 15 Oct 2008 19:20:35 GMT</pubDate><guid isPermaLink="false">New Post: DownloadCompleted do not refresh Image control? 20081015072035P</guid></item><item><title>New Post: DownloadCompleted do not refresh Image control?</title><link>http://www.codeplex.com/MicrosoftDwayneNeed/Thread/View.aspx?ThreadId=37220</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br&gt;
&lt;br&gt;
First, thanks for your great article about custom bitmaps in WPF. I learned lots of things!&lt;br&gt;
&lt;br&gt;
But I was surprised by the fact that the DownloadCompleted does not trig the refresh of an Image control. It sounds logical that this is the mechanism used by the BitmapImage class, when a remote image&amp;nbsp;(URL) is used as the source. I mean, when assigning a BitmapImage to the Source property of an Image control, the IsDownloading is True and the size (in pixels) is 1x1. CopyPixels is then called with a very small buffer (4 bytes if bgr/bgra).&amp;nbsp;As far as I know, the only way for the Image control to get notified that it should refresh itself is by listening to the DownloadCompleted event. So, I wondering why, if I raise myself the DownloadCompleted event in a custom class, the Image control is not refreshed?&lt;br&gt;
&lt;br&gt;
Here's&amp;nbsp;what I did: I created a new class, CMyBitmapSource, which derives from BitmapSource, and which only acts as a wrapper around a BitmapImage. All overridden stuff delegate to the wrapped object. So, when the &amp;quot;internal&amp;quot; DownloadCompleted occurs, the external &amp;quot;DownloadCompleted&amp;quot; is raised, which should cause the refresh of the listening Image control(s). But the event seems to be ignored when it is not directly raised by a BitmapImage class instance. I tested the event by registering a handler which output a debug line in the console, and this line appeared. Also,&amp;nbsp;a breakpoint&amp;nbsp;on the&amp;nbsp;delegate object (multicast delagate)&amp;nbsp;reveals that two delegates will be called (invocation count = 2).&lt;br&gt;
&lt;br&gt;
Here's some observations:&lt;br&gt;
&lt;br&gt;
1) As soon as the CMyBitmapSource instance is assigned to the Source property of an Image control, a new event handler is registered with the DownloadCompleted event. The target of the delegate is a System.WeakReference object, which itself targets the Image control.&lt;br&gt;
&lt;br&gt;
2) The IsDownloading property is never called. So, I think this enforces the fact that the only way for an Image control to know it should refresh itself is by listening to the DownloadCompleted event.&lt;br&gt;
&lt;br&gt;
3) The call order is:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3a) A new handler is registered for the DownloadCompleted event, which targets the Image control.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3b) CopyPixels is called with a small buffer (4 bytes).&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3c) DownloadCompleted is raised by the internal&amp;nbsp;BitmapImage. The event is then re-raised to the listening clients.&lt;br&gt;
&lt;br&gt;
At this point, isn't logical that CopyPixels should be recalled to get the downloaded data? I suspect&amp;nbsp;this is what&amp;nbsp;happens with the BitmapImage class, but this does not work with derived classes :o(&lt;br&gt;
&lt;br&gt;
Here's the class I used. Maybe you will see something I missed?&lt;br&gt;
&lt;br&gt;
The markup:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button x:Name=&amp;quot;MyButton&amp;quot; Click=&amp;quot;MyButton_Click&amp;quot;&amp;gt;Click&amp;lt;/Button&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Image x:Name=&amp;quot;MyImage&amp;quot;&amp;gt;&amp;lt;/Image&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/StackPanel&amp;gt;&lt;br&gt;
&lt;span style="font-size:13px;color:#a31515"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;
&lt;p&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;br&gt;
The code-behind:&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void MyButton_Click(object sender, RoutedEventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapImage i = new BitmapImage(new Uri(&amp;quot;&lt;a href="http://www.microsoft.com/presspass/presskits/windowsvista/images/icons/Security.jpg"&gt;http://www.microsoft.com/presspass/presskits/windowsvista/images/icons/Security.jpg&lt;/a&gt;&amp;quot;));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMyBitmapSource b = new CMyBitmapSource(i);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyImage.Source = b;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.DownloadCompleted += new EventHandler(b_DownloadCompleted);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void b_DownloadCompleted(object sender, EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(&amp;quot;Completed!&amp;quot;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
The class:&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class CMyBitmapSource : BitmapSource&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapSource m_bmp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventHandler m_DownloadCompleted;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public CMyBitmapSource() {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public CMyBitmapSource(BitmapSource pbsSource)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_bmp = pbsSource;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_bmp.DownloadCompleted += new EventHandler(m_bmp_DownloadCompleted);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override Freezable CreateInstanceCore() {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new CMyBitmapSource();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void m_bmp_DownloadCompleted(object sender, EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_DownloadCompleted != null)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_DownloadCompleted(sender, e);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void CopyPixels(Int32Rect sourceRect, Array pixels, int stride, int offset)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_bmp.CopyPixels(sourceRect, pixels, stride, offset);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void CopyPixels(Array pixels, int stride, int offset)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_bmp.CopyPixels(pixels, stride, offset);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void CopyPixels(Int32Rect sourceRect, IntPtr buffer, int bufferSize, int stride)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_bmp.CopyPixels(sourceRect, buffer, bufferSize, stride);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override event EventHandler DownloadCompleted&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_DownloadCompleted += value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; remove&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_DownloadCompleted -= value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override event EventHandler&amp;lt;ExceptionEventArgs&amp;gt; DecodeFailed;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override event EventHandler&amp;lt;ExceptionEventArgs&amp;gt; DownloadFailed;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override event EventHandler&amp;lt;DownloadProgressEventArgs&amp;gt; DownloadProgress;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override double DpiX {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.DpiX; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override double DpiY {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.DpiY; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override PixelFormat Format {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.Format; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override double Height {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.Height; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override double Width {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.Width; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override int PixelHeight {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.PixelHeight; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override int PixelWidth {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.PixelWidth; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override BitmapPalette Palette {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.Palette; }}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override bool IsDownloading {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return m_bmp.IsDownloading; }}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;br&gt;
Thanks for your help!&lt;br&gt;
&lt;/div&gt;</description><author>dummyboy</author><pubDate>Tue, 07 Oct 2008 16:56:17 GMT</pubDate><guid isPermaLink="false">New Post: DownloadCompleted do not refresh Image control? 20081007045617P</guid></item></channel></rss>