Skip to content

softgarden137/tile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

tile(transforms.simple)

softgarden137

===

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript">
        window.DLR = { settings: { console: false } }
    </script>
    <script src="http://gestalt.ironpython.net/dlr-latest.js" type="text/javascript"></script>
    <title>SilverlightPageTile</title>
</head>
<body>
  <script type="text/python" class="page" src="SilverlightPageTile.py"></script>

  <script id="page" type="application/xml+xaml" width="600" height="300">
    <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="600" Height="300">
      <Canvas x:Name="LayoutRoot" Background="#222222">
        <Canvas x:Name="tiles"></Canvas>
      </Canvas>
    </UserControl>
  </script>

</body>
</html>
from System import * # for Convert
from System.Windows.Controls import Canvas, UserControl
from System.Windows.Shapes import * # exposes Rectangle to scope since not added by default
from System.Windows.Media import *
from System.Windows.Media.Animation import * # exposes Storyboard
#from System.Windows.Media.Imaging import * # for bitmap
from System.Windows import Point
from System.Diagnostics import * # enables outputing to a debug window!

layoutRoot = me.LayoutRoot
tiles = me.tiles
mouse = Point(0, 0)

#
# define class that procedurally creates Tile code instead of XAML
#
class Tile(Canvas): # inherits from Canvas
    def __init__(self):

        self.targetAngle = 0
        layoutRoot = Canvas()
        self.Children.Add(layoutRoot)

        self.bkg = Canvas()
        self.bkg.Width = 30
        self.bkg.Height = 10
        self.bkg.Background = SolidColorBrush(Colors.White)
        self.bkg.RenderTransformOrigin = Point (0.5,0.5)
        Canvas.SetLeft(self.bkg, -15)
        Canvas.SetTop (self.bkg, -5)
        layoutRoot.Children.Add(self.bkg)

        self.scale = ScaleTransform()
        self.scale.ScaleX = 1.0
        self.scale.ScaleY = 1.0

        self.rotation = RotateTransform()
        self.rotation.Angle = 0

        transformGroup = TransformGroup()
        transformGroup.Children.Add(self.scale)
        transformGroup.Children.Add(self.rotation)
        self.bkg.RenderTransform = transformGroup

        dc = DoubleCollection();
        dc.Add(1);
        dc.Add(2);

        ellipse = Ellipse()
        ellipse.Stroke = SolidColorBrush(Color.FromArgb(0xFF,0xFF,0x00,0xFF))
        ellipse.StrokeDashArray = dc

        ellipse.Width = 10
        ellipse.Height = 10
        Canvas.SetLeft(ellipse, -5)
        Canvas.SetTop (ellipse, -5)
        layoutRoot.Children.Add(ellipse)

        def sb_Completed(sender, e):
            self.rotation.Angle = self.rotation.Angle + ( self.targetAngle - self.rotation.Angle)*.08
            sb.Begin()

        sb = Storyboard()
        sb.Completed += sb_Completed
        layoutRoot.Resources.Add("sb",sb)
        sb.Begin()

    def SetX(self, value):
        self.SetValue(Canvas.LeftProperty, Convert.ToDouble(value))
    def GetX(self):
        return self.GetValue(Canvas.LeftProperty)
    X = property(GetX, SetX)

    def SetY(self, value):
        self.SetValue(Canvas.TopProperty, Convert.ToDouble(value))
    def GetY(self):
        return self.GetValue(Canvas.TopProperty)
    Y = property(GetY, SetY)

    def SetBackground(self, value):
        self.bkg.Background = value
    def GetBackground(self):
        return self.bkg.Background
    background = property(GetBackground, SetBackground)

def Page_MouseMove(sender, e):
    global mouse
    global layoutRoot
    mouse = e.GetPosition(layoutRoot)

def sb_Completed(sender, e):
    global tiles
    global sb
    global mouse
    for s in tiles.Children:
        _y = s.Y - mouse.Y
        _x = s.X - mouse.X
        distance = Math.Sqrt((_y * _y) + (_x * _x))
        rad = Math.Atan2(_y, _x)
        angle = rad * (180/Math.PI)
        s.scale.ScaleX = .6 + ((distance / 300.0))
        s.scale.ScaleY = s.scale.ScaleX
        if distance < 200:
            s.targetAngle = angle - 180
        else: 
            s.targetAngle = 0
    sb.Begin()    
      
layoutRoot.MouseMove += Page_MouseMove
      
for x in range(0,15):
    for y in range(0, 10):
        s = Tile()
        s.background = SolidColorBrush(Color.FromArgb(0xcc,Convert.ToByte((100 + (x*10))),0,Convert.ToByte((100 + (y*15)))))
        s.X = 115 + (x * 25)
        s.Y = 25 + (y * 25)
        tiles.Children.Add(s)
      
sb = Storyboard()
sb.Completed += sb_Completed
layoutRoot.Resources.Add("sb", sb)
sb.Begin()

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages