[IronPython] [python] Loading Images from XAML with XamlReader (WPF)
Michael Foord
fuzzyman at voidspace.org.uk
Thu Dec 13 16:19:42 CET 2007
Just to clarify - creating an image directly from code *does* work. But
I still want (need?) to know why it doesn't work when loaded from XAML?
This is the working code:
import clr
clr.AddReference("PresentationFramework")
clr.AddReference("PresentationCore")
from System import Uri, UriKind
from System.Windows.Markup import XamlReader
from System.Windows import (
Application, Window
)
from System.Windows.Controls import Image
from System.Windows.Media.Imaging import BitmapImage
class HelloWorld(Window):
def __init__(self):
self.Width = 500
self.Height = 500
self.Title = 'Example'
image = Image()
bi = BitmapImage()
bi.BeginInit()
bi.UriSource = Uri("images/image.jpg", UriKind.RelativeOrAbsolute);
bi.EndInit()
image.Source = bi
print image.ActualHeight, image.ActualWidth
self.Content = image
hello = HelloWorld()
app = Application()
app.Run(hello)
Michael
Michael Foord wrote:
> Hello guys,
>
> I'm struggling to load images from XAML using the XamlReader with
> IronPython. The equivalent with compiled XAML and C# works fine -
> however this doesn't directly use the XamlReader so I wonder if it is an
> issue with that?
>
> The Python code is:
>
> import clr
> clr.AddReference("PresentationFramework")
> clr.AddReference("PresentationCore")
>
> from System.IO import File
> from System.Windows.Markup import XamlReader
>
> from System.Windows import (
> Application, Window
> )
>
> class HelloWorld(Window):
> def __init__(self):
> stream = File.OpenRead("HelloWorld.xaml")
> self.Content = XamlReader.Load(stream)
>
> hello = HelloWorld()
>
> app = Application()
> app.Run(hello)
>
>
> The XAML is:
>
> <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
> xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
>
> <Grid>
> <Image Source="images/image.jpg" Stretch="None"
> HorizontalAlignment="Center" VerticalAlignment="Center"/>
> </Grid>
>
> </Window>
>
> The image stubbornly refuses to appear and reports an ActualHeight and
> ActualWidth of 0.0 if I inspect it.
>
> I've even tried instantiating a BitmapImage directly from code and
> setting it as the Source on the image:
>
> image = root.FindName("image")
>
> bi = BitmapImage()
> bi.BeginInit()
> bi.UriSource = Uri("/images/image.jpg", UriKind.RelativeOrAbsolute);
> bi.EndInit()
> image.Source = bi
>
> Same problem - the image doesn't show. Anyone got any clues?
>
> Michael Foord
> http://www.voidspace.org.uk/python/weblog/index.shtml
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
More information about the Ironpython-users
mailing list