none
Problem mit Slider Background RRS feed

  • Frage

  • Ich möchte in meinen SolidColorBrush Auswahlfenster einen Transparenzslider einbauen. Dazu habe ich folgenden Code:

                        <Slider x:Name="sliderSolidAlpha" Margin="297,242,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="256" Height="24" Foreground="Black">
                            <Slider.Background>
                                <VisualBrush TileMode="Tile">
                                    <VisualBrush.Visual>
                                        <Grid>
                                            
                                            <Rectangle>
                                                <Rectangle.Fill>
                                                    <DrawingBrush Viewport="0,0,0.0625,0.66" TileMode="Tile">
                                                        <DrawingBrush.Drawing>
                                                            <DrawingGroup>
                                                                <GeometryDrawing Brush="White">
                                                                    <GeometryDrawing.Geometry>
                                                                        <RectangleGeometry Rect="0,0,80,80" />
                                                                    </GeometryDrawing.Geometry>
                                                                </GeometryDrawing>
    
                                                                <GeometryDrawing>
                                                                    <GeometryDrawing.Geometry>
                                                                        <GeometryGroup>
                                                                            <RectangleGeometry Rect="0,0,40,40" />
                                                                            <RectangleGeometry Rect="40,40,40,40" />
                                                                        </GeometryGroup>
                                                                    </GeometryDrawing.Geometry>
    
                                                                    <GeometryDrawing.Brush>
                                                                        <SolidColorBrush Color="Gray" />
                                                                    </GeometryDrawing.Brush>
                                                                </GeometryDrawing>
    
                                                            </DrawingGroup>
                                                        </DrawingBrush.Drawing>
                                                    </DrawingBrush>
                                                </Rectangle.Fill>                                            
                                            </Rectangle>
                                            
                                            <Rectangle>
                                                <Rectangle.Fill>
                                                    <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                                                        <GradientStop Color="{Binding ElementName=rectanglePreview, Path=Fill.Color}" Offset="0" />
                                                        <GradientStop Offset="1" Color="#00000000" />
                                                    </LinearGradientBrush>
                                                </Rectangle.Fill>
                                            </Rectangle>
                                            
                                        </Grid>
                                    </VisualBrush.Visual>
                                </VisualBrush>
                            </Slider.Background>
                        </Slider>

    So sieht es im Designer aus:

    Im Programm selbst ist nur ein weißer Hintergrund zu sehen.


    Eigentlich sollte ein Farbverlauf von rectanglePreview.Fill.Color zu #00000000 kommen , wobei bei den Transparenten stellen ein Grau-Weißes karomuster durchscheint. Wieso funktiioniert das nicht?


    Koopakiller - http://koopakiller.ko.ohost.de/

    Mittwoch, 18. April 2012 15:21
    Moderator

Antworten

  • Ich beantworte mir das mal selbst, der Code funktioniert:
            <Slider HorizontalAlignment="Left" Margin="174,84,0,0" VerticalAlignment="Top" Width="240" Height="18">
                <Slider.Background>
                    <VisualBrush>
                        <VisualBrush.Visual>
                            <Grid Height="1" Width="1">
                                <Grid.Background>
                                    <DrawingBrush Viewport="0,0,0.05,0.666" TileMode="Tile">
                                        <DrawingBrush.Drawing>
                                            <DrawingGroup>
                                                <GeometryDrawing Brush="White">
                                                    <GeometryDrawing.Geometry>
                                                        <RectangleGeometry Rect="0,0,100,100" />
                                                    </GeometryDrawing.Geometry>
                                                </GeometryDrawing>
    
                                                <GeometryDrawing Brush="Gray">
                                                    <GeometryDrawing.Geometry>
                                                        <GeometryGroup>
                                                            <RectangleGeometry Rect="0,0,50,50" />
                                                            <RectangleGeometry Rect="50,50,50,50" />
                                                        </GeometryGroup>
                                                    </GeometryDrawing.Geometry>
                                                </GeometryDrawing>
                                            </DrawingGroup>
                                        </DrawingBrush.Drawing>
                                    </DrawingBrush>
                                </Grid.Background>
                                <Border >
                                    <Border.Background>
                                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                                            <GradientStop Color="Red"/>
                                            <GradientStop Color="#00FF0000" Offset="1"/>
                                        </LinearGradientBrush>
                                    </Border.Background>
                                </Border>
                            </Grid>
                        </VisualBrush.Visual>
                    </VisualBrush>
                </Slider.Background>
            </Slider>
    Es glaube das es daran lag, ohne es zu testen, das ich keine Größe für die Inneren Elemente des VisualBrushes angegeben habe.

    Koopakiller [kuːpakɪllɐ] http://koopakiller.ko.ohost.de/

    Donnerstag, 6. Dezember 2012 15:30
    Moderator