0
GeometryModel3D로 표시된 큐브가 있고 데이터베이스에 저장된 텍스처로 채워진 ListBox가있는 프로그램이 있습니다. 마우스를 두 번 클릭 할 때마다 입방체의 질감을 변경하려고하지만 작동하지 않습니다. 저 좀 도와 주 시겠어요?MouseDoubleClick 일 때 ImageSource를 변경할 수 없습니다.
<ModelVisual3D x:Name="floor">
<ModelVisual3D.Content>
<Model3DGroup>
<DirectionalLight Color="#FFE2E0E0" Direction="-1,-1,-3" >
</DirectionalLight>
<GeometryModel3D x:Name="floorModel">
<GeometryModel3D.Geometry>
<MeshGeometry3D x:Name="floorGeometry" Positions="{Binding FLoorPoints3D}" TriangleIndices="{Binding FloorPointsIndices}"
TextureCoordinates="0,1 0,0 1,0 1,1 1,1 -0,1 0,-0, 1,0 1,1 -0,1 0,-0 1,0 1,0 1,1 -0,1 0,-0 -0,0 -0,0 1,-0 1,1 0,1 1,-0 1,1 0,1 -0,1"/>
</GeometryModel3D.Geometry>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
public int FloorImagesLoader(string query)
{
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(query, connection);
SqlDataReader reader;
HomeDesigner.Converters converters = new Converters();
List<HomeDesigner.Classes.Floor> floorImageList = new List<Classes.Floor>();
HomeDesigner.Classes.Floor floorClass = new Classes.Floor();
try
{
connection.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
{
floorImageList.Add(new HomeDesigner.Classes.Floor { FloorTextureID = (int)reader[0], Image = converters.ByteArrayToImage(((byte[])reader[1])) });
}
}
}
finally
{
connection.Close();
}
ListBoxImages.ItemsSource = floorImageList;
ID = floorClass.FloorTextureID;
return ID;
}
BitmapImage textureImage = new BitmapImage();
private void SetImageTexture()
{
int parquetIndex = 0;
ListBoxImages.MouseLeftButtonDown += (sender, e) =>
{
if (ListBoxImages.ItemsSource != null)
{
if (buttonParquetClick == true)
{
if (e.LeftButton == MouseButtonState.Pressed && e.ClickCount == 2)
{
parquetIndex = ListBoxImages.SelectedIndex;
string parquete_Query = "SELECT FloorID, FloorImage FROM HomeDesigner.dbo.Floor where FloorTypeID=3";
textureImage = TexturesLoader(parquete_Query, parquetIndex + 1);
ImageBrush imageBrush = new ImageBrush();
imageBrush.ImageSource = textureImage;
floorModel.Material = new DiffuseMaterial(imageBrush);
}
}
else
{
}
}
};
}
이러한 변경 사항을 만들었지 만 여전히 작동하지 않습니다. – Scarabey
아무 생각없이, 그것은 나를 위해 작동합니다. 이벤트 핸들러에 중단 점을 설정하여 호출되는 것을 확인 했습니까? – Clemens