using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ClientBingo
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Canvas c = new MyCanvas();
Grid myGrid = new Grid();
RowDefinition row3 = new RowDefinition();
row3.Height = new GridLength(200, GridUnitType.Pixel);
//Grid.SetRowSpan(c, 2);
RowDefinition row = new RowDefinition();
row.Height = new GridLength(1, GridUnitType.Star);
RowDefinition row2 = new RowDefinition();
row2.Height = new GridLength(1, GridUnitType.Star);
ColumnDefinition col = new ColumnDefinition();
col.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition col2 = new ColumnDefinition();
col2.Width = new GridLength(1, GridUnitType.Star);
myGrid.RowDefinitions.Add(row3);
myGrid.RowDefinitions.Add(row);
myGrid.RowDefinitions.Add(row2);
myGrid.ColumnDefinitions.Add(col);
myGrid.ColumnDefinitions.Add(col2);
TextBlock txt = new TextBlock();
txt.Background = Brushes.AliceBlue;
txt.Text = "Row " + Convert.ToString(32);
Grid.SetRow(txt, 0);
Grid.SetColumn(txt, 0);
Grid.SetColumnSpan(txt, 2);
myGrid.Children.Add(txt);
Grid.SetRow(c, 0);
Grid.SetColumn(c, 0);
myGrid.Children.Add(c);
//c = new MyCanvas();
//Grid.SetRow(c, 1);
//Grid.SetColumn(c, 1);
//myGrid.Children.Add(c);
myGrid.ShowGridLines = true;
this.Content = myGrid;
}
}
}
[Canvas.cs]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace ClientBingo
{
class MyCanvas : Canvas
{
protected override void OnRender(System.Windows.Media.DrawingContext dc)
{
base.OnRender(dc);
Background = Brushes.Black;
dc.DrawLine(new Pen(Brushes.Aqua, 2.0), new Point(2.0, 2.0), new Point(413.0, 213.0));
}
}
}
결과를 보건대, Grid에 추가는 중복으로 가능한 듯 하며, 나중에 추가될수록 위로 덮힌다. 그리고 영향력은 Grid의 영역을 초과하는 것이 가능하지만, 일반적인 경우 한정된 공간만큼 제한되는 듯 하다.
코드에 분명히 canvas와 textbloc을 row 0과 column 0에 대입했다. 다 그려지며, txt는 columnspan = 2로 2개 영역에 걸쳐 그려지는 반면, canvas는 1개 영역에만 그려진다. 하지만 그려진 직선은 영역을 벗어나서도 그려지는 것이 보인다...
하지만 이것은 그곳에 추가된 영역이 없을 때(?) 그러한 듯하다.
가령 위 진한 주석을 풀면,
이와 같이 되었다.
물론,
c = new MyCanvas(); //이것을 새로 해주어야 했다. 같은 객체를 다른 곳에 추가하려 하니 에러가 발생했다.
Grid.SetRow(c, 1);
Grid.SetColumn(c, 1);
myGrid.Children.Add(c);
가령 위 진한 주석을 풀면,
이와 같이 되었다.
물론,
c = new MyCanvas(); //이것을 새로 해주어야 했다. 같은 객체를 다른 곳에 추가하려 하니 에러가 발생했다.
Grid.SetRow(c, 1);
Grid.SetColumn(c, 1);
myGrid.Children.Add(c);
댓글 없음:
댓글 쓰기