private void ChangeNormalMap(object sender, EventArgs e) { if (TextureFileDialog.ShowDialog() == DialogResult.OK) { Bitmap oldImage = NormalVectorTextureBox.BackgroundImage as Bitmap; Bitmap bitmap = new Bitmap(TextureFileDialog.FileName); NormalVectorTextureBox.BackgroundImage = bitmap; colorsForPolygonFill.SetNormalMap(bitmap); colorsForPolygonFill2.SetNormalMap(bitmap); oldImage?.Dispose(); drawingArea.Refresh(); } }
public PolygonFiller() { InitializeComponent(); StartPosition = FormStartPosition.CenterScreen; lastState = WindowState; polygons = new List <IPolygon> { PolygonCreator.GetTriangle(), PolygonCreator.GetTriangle() }; polygons[1].HandlePolygonMove(new Point(350, 0)); Vertice.ClickRadius = 10; Edge.ClickDistance = 5; inputHandler = new DrawingAreaInputHandler { HandledPolygons = polygons, OnSuccessfullElementMove = drawingArea.Refresh, OnElementSelection = OnElementSelection, OnElementUnselection = OnElementUnselection }; standardPolygonDrawer = new PolygonDrawer { EdgeColor = Color.Green, EdgeThickness = 2, VerticeBorderColor = Color.LightGray, VerticeInsideColor = Color.FromArgb(28, 28, 28), VerticeBorderThickness = 1, VerticeRadius = 10, }; selectedElementDrawer = new PolygonDrawer { EdgeColor = Color.Red, EdgeThickness = standardPolygonDrawer.EdgeThickness, VerticeBorderColor = Color.Red, VerticeInsideColor = standardPolygonDrawer.VerticeInsideColor, VerticeBorderThickness = standardPolygonDrawer.VerticeBorderThickness, VerticeRadius = standardPolygonDrawer.VerticeRadius, }; ColorsForPolygonFill.ConstantDisruptionVector = new Vector3(0, 0, 0); ColorsForPolygonFill.ConstantNormalVector = new Vector3(0, 0, 1); ColorsForPolygonFill.ConstantVectorToLight = new Vector3(0, 0, 1); ColorsForPolygonFill.AnimatedNormalVectorMatrixSize = new Size(300, 300); rgbHeadlights = new RBGHeadlights { CosinePower = 1000, HeadlightsHeight = 100 }; rgbHeadlights2 = new RBGHeadlights { CosinePower = rgbHeadlights.CosinePower, HeadlightsHeight = rgbHeadlights.HeadlightsHeight }; colorsForPolygonFill = new ColorsForPolygonFill { ObjectColorOption = ObjectColorOption.Constant, DisruptionVectorOption = DisruptionVectorOption.None, NormalVectorOption = NormalVectorOption.Constant, VectorToLightOption = VectorToLightOption.Constant, ObjectColor = ILColorBox.BackColor, LightColor = new Vector3(1, 1, 1), DrawingAreaSize = drawingArea.Size, RBGHeadlights = rgbHeadlights, AnimatedNormalVectorGenerator = new NormalVectorCustomGenerator { A = 0.1f, B = 0.1f } }; colorsForPolygonFill2 = new ColorsForPolygonFill { ObjectColorOption = colorsForPolygonFill.ObjectColorOption, DisruptionVectorOption = colorsForPolygonFill.DisruptionVectorOption, NormalVectorOption = colorsForPolygonFill.NormalVectorOption, VectorToLightOption = colorsForPolygonFill.VectorToLightOption, ObjectColor = colorsForPolygonFill.ObjectColor, LightColor = colorsForPolygonFill.LightColor, DrawingAreaSize = colorsForPolygonFill.DrawingAreaSize, RBGHeadlights = rgbHeadlights2, AnimatedNormalVectorGenerator = new NormalVectorCustomGenerator { A = colorsForPolygonFill.AnimatedNormalVectorGenerator.A, B = colorsForPolygonFill.AnimatedNormalVectorGenerator.B } }; DisruptionVectorTextureBox.BackgroundImage = Images.brick_heightmap; colorsForPolygonFill.SetHeightMap(Images.brick_heightmap); colorsForPolygonFill2.SetHeightMap(Images.brick_heightmap); NormalVectorTextureBox.BackgroundImage = Images.brick_normalmap; colorsForPolygonFill.SetNormalMap(Images.brick_normalmap); colorsForPolygonFill2.SetNormalMap(Images.brick_normalmap); IoTextureBox.BackgroundImage = Images.sampleTexture; colorsForPolygonFill.SetObjectTexture(Images.sampleTexture); IoTextureBox2.BackgroundImage = Images.sampleTexture; colorsForPolygonFill2.SetObjectTexture(Images.sampleTexture); UpdatePolygonsCache(); lightSourceGenerator = new LightSourceGenerator { AngleChange = 10, HeightStepChange = 10, MinHeight = 20, MaxHeight = 200, Radius = 300, Origin = new Vector2(drawingArea.Width / 2, drawingArea.Height / 2), StartingHeight = 100 }; radius = lightSourceGenerator.Radius; rgbCosinePower = rgbHeadlights.CosinePower; rgbHeight = rgbHeadlights.HeadlightsHeight; ResizeEnd += FormSizeChangedHandler; Resize += HandleWindowMaximization; drawingArea.Paint += Draw; drawingArea.MouseDown += inputHandler.HandleMouseDown; drawingArea.MouseUp += inputHandler.HandleMouseUp; drawingArea.MouseMove += inputHandler.HandleMouseMove; LightColorButton.Click += ChangeLightColor; SetObjectColorButton.Click += ChangeObjectColor; SetObjectColorButton2.Click += ChangeObjectColor2; SetObjectTextureButton.Click += ChangeObjectTexture; SetObjectTextureButton2.Click += ChangeObjectTexture2; SetNormalMapButton.Click += ChangeNormalMap; SetHeightMapButton.Click += ChangeHeightMap; ObjectColorFromTexture.Click += SetObjectColorFromTexture; ObjectColorFromTexture2.Click += SetObjectColorFromTexture2; ObjectColorSingle.Click += SetConstantObjectColor; ObjectColorSingle2.Click += SetConstatntObjectColor2; NormalVectorConstant.Click += SetNormalVectorConstant; NormalVectorFromTexture.Click += SetNormalVectorFromTexture; DisruptionVectorConstant.Click += SetDisruptionVectorConstant; DisruptionVectorFromTexture.Click += SetDisruptionVectorFromTexture; VectorToLightConstant.Click += SetVectorToLightConstant; VectorToLightAnimated.CheckedChanged += SetVectorToLightAnimated; TurnRgbHighlightsOn.Click += TurnRgbHighlightsOnHandler; TurnRgbHighlightsOff.Click += TurnRgbHighlightsOffHandler; RadiusTextBox.Text = lightSourceGenerator.Radius.ToString(); RadiusTextBox.TextChanged += RadiusTextboxTextChangedHandler; RadiusButtonAccept.Click += SetNewRadius; CosinePowerTextBox.Text = rgbHeadlights.CosinePower.ToString(); CosinePowerTextBox.TextChanged += CosineTextboxTextChangedHandler; HighlightsHeightTextBox.Text = rgbHeadlights.HeadlightsHeight.ToString(); HighlightsHeightTextBox.TextChanged += HighlightsHeightTextboxTextChangedHandler; RgbHeadlightsParameterAccept.Click += SetNewRgbHeadlightsParameters; NormalVectorAnimated.Click += SetNormalVectorAnimated; NormalVectorAnimatedParameterA.Text = colorsForPolygonFill.AnimatedNormalVectorGenerator.A.ToString(); NormalVectorAnimatedParameterB.Text = colorsForPolygonFill.AnimatedNormalVectorGenerator.B.ToString(); NormalVectorAnimatedParametersUpdate.Click += UpdateAnimatedNormalVectorParameters; }