2014-11-21, 15:30
  #1
Medlem
M0wes avatar
Hej! Jag försöker göra ett Othellospel i C# med WPF som ramverk för applikationen. Jag har använt denna tutorial för att bygga upp ett spelbräde och det ser snyggt ut:

http://stackoverflow.com/questions/19911109/clicking-a-uniformgrid-filled-with-grids-getting-name-of-the-grid-im-clicking

Kolla svaret inte frågan

Nu vill jag rita ut 4 st brickor på bräded så jag försöker rita ut en ellips när jag klickar på brädet (spelar ingen roll var)

HTML-kod:
ReversiDisk disk = new ReversiDisk();

private void OnSquareClick(ReversiSquare square)
{
            MessageBox.Show("You clicked on Row: " + square.Row + " - Column: " + square.Column);
            disk.DrawBlackReversiDisk();
}

HTML-kod:
från funktionen

 public class ReversiDisk : FrameworkElement
 {
        public ReversiDisk() { }

        public void DrawBlackReversiDisk()
        {
            DrawingVisual diskVisual = new DrawingVisual();
            using (DrawingContext dc = diskVisual.RenderOpen())
            {
                dc.DrawEllipse(Brushes.Blue, null, new Point(20, 20), 10.0, 10.0);
            }
        }
}

Försöker altså rita ut en blå ellips på punkten (20,20) vilket borde synas på skärmen men får inte ut något. Jag antar att den döljs på nåt sätt av det som finns utritat nu. Finns det något sätt att placera den framför?

Har även testat att rita ut såhär:

HTML-kod:
// Create an Ellipse
Ellipse blackDisk= new Ellipse();
blackDisk.Height = 200;
blackDisk.Width = 200;

// Create a blue and a black Brush
SolidColorBrush blackBrush = new SolidColorBrush();
blackBrush.Color = Colors.Black;
            
// Set Ellipse's width and color
blackDisk.StrokeThickness = 4;
blackDisk.Stroke = blackBrush;

// Fill rectangle with color
blackDisk.Fill = blackBrush;

// Add Disk to the Game board.

Men i de fallet vet jag inte hur jag ska rita ut den eftersom jag inte har något direkt layout definerad
som jag kan lägga till den i, eller så förstår jag bara inte hur jag ska göra.

Några tips på hur jag kan rita ut ellipser på spelbrädet eller om jag borde bygga upp brädet på något annat sätt för att rita ut mina brickor?
Citera
2014-11-30, 23:45
  #2
Medlem
Magnu5s avatar
Tjena! Läste bara lite snabbt men måste nog hålla med det mest upvotad:e på SO, tillämpa mer MVVM! WPF blir i mitt tycke lite meningslöst utan det tänket... Ett othellospel tror jag är ett riktigt bra projekt för att lära sig mvvm dessutom!

Edit: jag fick i alla fall inte intrycket av dina kodexempel att det var mvvm stuk men jag kan ha fel, bifoga gärna mer kod så man ser lite mer av kontexten

Personligen hade jag lagt tid på att styla upp en itemscontrol som höll en rad av usercontrols som egentligen bara är en fyrkant med möjlighet att visa en svart eller vit cirkel. Sen hade jag byggt modellen för en sådan ruta och modell för hela spelplanen, därefter byggt vymodellerna för att få till logiken.
__________________
Senast redigerad av Magnu5 2014-12-01 kl. 00:07.
Citera
2014-12-03, 10:41
  #3
Medlem
Cliffords avatar
Håller med Magnu5 ovan, gör en UserControl och använd xaml mer.

Ett exempel på en väldigt enkel UserControl som ritar en vit cirkel på en grön bakgrund:
Kod:
<UserControl x:Class="Test.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="100" d:DesignWidth="100">
    <Canvas Height="100" Width="100" Background="Green">
        <Ellipse x:Name="brick" Height="100" Width="100" Fill="White" Stroke="Black" StrokeThickness="1"/>
    </Canvas>
</UserControl>

Ellipsen kan sedan modifieras i kod, t.ex:

Kod:
brick.Fill = Brushes.Black;

brick.Visibility = Visibility.Hidden;
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in