이 응용 프로그램을 개발하는 동안 저는 3D 모델 렌더링을 위해 캔버스를 사용했습니다. 이 캔버스는 지금까지이 XAML로 표현되었습니다.WPF Canvas - 그라디언트와 이미지가 모두있는 배경?
<Canvas x:Name="modelCanvas" Grid.Row="0">
<Canvas.Background>
<RadialGradientBrush>
<GradientStop Color="#FFDED9D9" Offset="1"/>
<GradientStop Color="White" Offset="0.007"/>
</RadialGradientBrush>
</Canvas.Background>
</Canvas>
이 배경에도 이미지를 추가하고 싶습니다. Canvas.Background
의 자식으로 <ImageBrush ImageSource="/Images/bg2.png"/>
을 추가하려고 시도했지만 배경을 설정하는 브러시를 하나만 사용할 수 있기 때문에 이것은 분명히 실패했습니다. 브러쉬를 결합하는 방법이 없습니까? 이 책임이 뷰포트에 떨어질 수 있습니까? 이 이미지를 렌더링 환경과 완전히 분리하기를 바랬습니다.
이상적으로이 문제에 대한 해결책은 XAML에서 해결할 수 있지만 C#에서는 프로젝트를 개발 중입니다.
그것은 당신이 달성하려고하는지 불분명하다. 그라디언트 위에 이미지가 부분적으로 투명하게 오버레이되어 있습니까? 아니면 이미지 불투명도에 그라디언트가 있어야할까요? – Clemens
@Clemens 이미지는 부분적으로 투명하며 그라데이션 위에 겹쳐 져서 표시됩니다. 하나의 분명한 옵션은 이미지 편집기에서 그런 이미지를 만드는 것이지만, 나는 그 해결책을 피하고 싶다. – jah
_ "브러쉬를 결합하는 방법이 없습니까?"_ - 저는 내장형 "복합 브러시"유형을 알지 못합니다. 그러나'DrawingBrush'를 사용하여 _drawing_ 오브젝트를 백그라운드로 사용할 수있는 단일 브러시로 결합 할 수 있습니다. 'DrawingGroup'을 사용하여'ImageDrawing'과'GeometryDrawing'을 결합 할 수 있습니다. 후자는'RadialGradientBrush'를 사용합니다. 'DrawingBrush.Drawing'을'DrawingGroup'으로 설정하면, 배경으로 사용할 수있는 브러시가 하나 있습니다. Clemens가 게시 한 답변을 사용할 수도 있습니다. 어느 쪽이든, 이미지를 빌드에 포함시켜야합니다. –