protected void ChageDirectionIfNextPositionUnsafe() { if (!MoveIsSafe(NextPosition)) { directionOption = AI.GetRandomDirectionOption(Node); } }
public void InitializeFields(PointNode node, GameObject bodySection, string name) { Node = node; this.bodySection = bodySection; Name = name; directionOption = AI.GetRandomDirectionOption(node); CollisionHappened += CollisionHandler.OnCollisionHappend; }
public static DirectionOption GetRandomDirectionOption(PointNode node) { IEnumerable <PointNode> availableNeighbors = node.NeighborsInAccess; if (availableNeighbors.Count() > 0) { PointNode nextNode = GetRandomElement(ref availableNeighbors); return(DirectionOption.IdentifyDirectionOption(node.Position, nextNode.Position)); } return(DirectionOption.IdentifyDirectionOption(node.Position, node.Neighbors.First().Position)); }
/// <summary> /// Move the item to the stack specified in the parameters /// </summary> /// <param name="ActionStack"></param> public void ChangeStack(Stack <HistoryProduct> ActionStack) { switch (this.ProductTransferDirection) { case DirectionOption.BACKFROMTHEBASKET: this.ProductTransferDirection = DirectionOption.TOBASKET; break; case DirectionOption.TOBASKET: this.ProductTransferDirection = DirectionOption.BACKFROMTHEBASKET; break; } ActionStack.Push(this); }
public void InitMenu(List <SelectableTarget> targets) { options = new DirectionOption[targets.Count + 1]; GameObject traverseOption = Instantiate(OptionPrefab, OptionsContainer.transform); traverseOption.transform.localPosition = new Vector3(0, 0, 0); DirectionOption traverseOptionCompenent = traverseOption.GetComponent <DirectionOption>(); options[0] = traverseOptionCompenent; traverseOptionCompenent.InitOption("Walk Here", walkHereSprite, 0); float largestWidth = traverseOptionCompenent.GetTextWidth(); for (int i = 0; i < targets.Count; ++i) { int adjIndex = i + 1; GameObject newOptionObject = Instantiate(OptionPrefab, OptionsContainer.transform); newOptionObject.transform.localPosition = new Vector3(0, pixelYOffset * -adjIndex, 0); DirectionOption option = newOptionObject.GetComponent <DirectionOption>(); options[adjIndex] = option; option.InitOption(targets[i], adjIndex); // Get largest width float newWidth = option.GetTextWidth(); largestWidth = newWidth > largestWidth ? newWidth : largestWidth; } // + buffer largestWidth += pixelOptionBuffer; ResizePanelSafe(new Vector2(largestWidth + pixelMainPanelBuffer, (targets.Count + 1) * pixelYOffset + pixelMainPanelBuffer * 1.5f)); float minW = WindowDimensions.x - pixelMainPanelBuffer; for (int i = 0; i < options.Length; ++i) { options[i].ResizeOption(Mathf.Clamp(largestWidth, minW, largestWidth)); } }
public static Position GetNextPosition(PointNode node, DirectionOption directionOption) { sbyte[] coords = node.Position.Coordinates; coords[directionOption.AxisNumber] += directionOption.Direction; return(new Position(coords)); }
/// <summary> /// Bir image dosyasını istenilen boyutta keser. /// </summary> /// <param name="image">image olarak gönderilecek resmi ifade eder.</param> /// <param name="width">Kesilecek olan resmin genişliğini ifade eder.</param> /// <param name="height">Kesilecek olan resmin yüksekliğini ifade eder.</param> /// <param name="directionOption">Bitmap'ın neresinden kesileceğini ifade eder.</param> /// <returns>Bitmap</returns> public static Image CutImage(Image image, int width, int height, DirectionOption directionOption) { using var bitmap = ImageToBitmap(image); using var yeniBitmap = bitmap.Clone(new Rectangle(0, 0, width, height), bitmap.PixelFormat); return(BitmapToImage(yeniBitmap)); }
/// <summary> /// Bir Bitmap dosyasını istenilen boyutta keser. /// </summary> /// <param name="bitmap">Bitmap olarak gönderilecek resmi ifade eder.</param> /// <param name="width">Kesilecek olan resmin genişliğini ifade eder.</param> /// <param name="height">Kesilecek olan resmin yüksekliğini ifade eder.</param> /// <param name="directionOption">Bitmap'ın neresinden kesileceğini ifade eder.</param> /// <returns>Bitmap</returns> public static Bitmap CutImage(Bitmap bitmap, int width, int height, DirectionOption directionOption) { return(bitmap.Clone(new Rectangle(0, 0, width, height), bitmap.PixelFormat)); }
/// <summary> /// Bitmap dosyasını istenen yerinden, istenen boyutta yeniden ölçeklendirmek için kullanılır. /// </summary> /// <param name="bitmap">Bitmap olarak gönderilecek resmi ifade eder.</param> /// <param name="imageResizeOption">Biçimlendirme şeklini ifade eder.</param> /// <param name="directionOption">Kesilecek bitmapın yerini ifade eder.</param> /// <param name="newWidth">Ölçeklendirilmiş bitmapın yeni genişliğini ifade eder.</param> /// <param name="newHeight">Ölçeklendirilmiş bitmapın yeni yüksekliğini ifade eder.</param> /// <param name="scaleOption">Yüksekliğinmi yoksa genişliğinmi esas alınacağını ifade eder.</param> /// <returns>Bitmap</returns> public static Bitmap ResizeImage(Bitmap bitmap, ImageResizeOption imageResizeOption, DirectionOption directionOption, int newWidth, int newHeight, ScaleOption scaleOption) { switch (imageResizeOption) { case ImageResizeOption.Fit: if (bitmap.Height - newHeight > bitmap.Width - newWidth) { _rate = newHeight / (float)bitmap.Height; var myNewWidth = (int)(bitmap.Width * _rate); var newerBitmap = new Bitmap(myNewWidth, newHeight, PixelFormat.Format64bppArgb); var graphicsFromImge = Graphics.FromImage(newerBitmap); graphicsFromImge.DrawImage(bitmap, new Rectangle(0, 0, myNewWidth, newHeight), new Rectangle(0, 0, bitmap.Width, bitmap.Height), GraphicsUnit.Pixel); return(newerBitmap); } else { _rate = newWidth / (float)bitmap.Width; var myNewHeight = (int)(bitmap.Height * _rate); var newerBitmap = new Bitmap(newWidth, myNewHeight, PixelFormat.Format64bppArgb); using (_graphics = Graphics.FromImage(newerBitmap)) { _graphics.DrawImage(bitmap, new Rectangle(0, 0, newWidth, myNewHeight), new Rectangle(0, 0, bitmap.Width, bitmap.Height), GraphicsUnit.Pixel); return(newerBitmap); } } case ImageResizeOption.Stretch: var newlyBitmap = new Bitmap(newWidth, newHeight, PixelFormat.Format64bppArgb); using (_graphics = Graphics.FromImage(newlyBitmap)) { _graphics.DrawImage(bitmap, 0, 0, newWidth, newHeight); } return(newlyBitmap); case ImageResizeOption.Cut: _newBitmap = new Bitmap(newWidth, newHeight, PixelFormat.Format64bppArgb); using (_graphics = Graphics.FromImage(_newBitmap)) { DirectionSet(directionOption, bitmap, newWidth, newHeight); _graphics.DrawImage(bitmap, new Rectangle(0, 0, newWidth, newHeight), _leftCoordinate, _topCoordinate, newWidth, newHeight, GraphicsUnit.Pixel); } return(_newBitmap); case ImageResizeOption.Scale: if ((newWidth / (float)bitmap.Width > newHeight / (float)bitmap.Height && newWidth / (float)bitmap.Width > 1) || (newWidth / (float)bitmap.Width > newHeight / (float)bitmap.Height && (float)newWidth / bitmap.Width < 1 && (float)newHeight / bitmap.Height < 1)) { var myImage = ResizeImage(bitmap, ScaleOption.Width, newWidth); return(ResizeImage(myImage, ImageResizeOption.Cut, directionOption, newWidth, newHeight, scaleOption)); } else if (bitmap.Width == bitmap.Height) { var myImage = ResizeImage(bitmap, scaleOption, newWidth); return(myImage); } else { //yukseklige gore resim boyutlandirilip sonra fazlalik kesilecek var myImage2 = ResizeImage(bitmap, ScaleOption.Height, newHeight); return(ResizeImage(myImage2, ImageResizeOption.Cut, directionOption, newWidth, newHeight, scaleOption)); } default: throw new ArgumentOutOfRangeException(nameof(imageResizeOption), imageResizeOption, null); } // return new Bitmap(600, 600); }
/// <summary> /// Bir bitmap resminin istenilen yerine istenilen bir yazının eklenmesini sağlar. /// </summary> /// <param name="bitmap">Bitmap olarak gönderilecek resmi ifade eder.</param> /// <param name="text">Bitmap resmine eklenecek olan yazıyı ifade eder.</param> /// <param name="opacity">Yazının opasitesini ifade eder.</param> /// <param name="directionOption">Yazının nereye yerleştirileceğini ifade eder.</param> /// <param name="textFont">Yazının fontunu ifade eder.</param> /// <param name="automatic">Yazının resme eklenmesi işleminin otomatik yapılmasını ifade eder.</param> /// <param name="textColor">Yazının rengini ifade eder.</param> /// <param name="textBackColor">Yazının arkasında kullanılacak rengi ifade eder.</param> /// <param name="brushStyle">Yazının arka planı için kullanılacak brush'ı ifade eder.</param> /// <returns>Bitmap</returns> public static Bitmap AddTextToImage(Bitmap bitmap, string text, int opacity, DirectionOption directionOption, Font textFont, bool automatic, Color textColor, Color textBackColor, HatchStyle brushStyle) { using (_brush = new HatchBrush(brushStyle, textColor, textBackColor)) { var imageFrom = new Bitmap(10, 10); var downGraphics = Graphics.FromImage(imageFrom); var textSize = new Size { Width = (int)downGraphics.MeasureString(text, textFont).Width, Height = (int)downGraphics.MeasureString(text, textFont).Height }; _font = new Font(textFont.FontFamily, textFont.Size); if ((textSize.Width > bitmap.Width || textSize.Height > bitmap.Height) && automatic) { for (var i = 0; i < 101; i++) { _font = new Font(textFont.FontFamily, textFont.Size * ((float)(100 - i) / 100)); textSize.Width = (int)downGraphics.MeasureString(text, _font).Width; textSize.Height = (int)downGraphics.MeasureString(text, _font).Height; if (textSize.Width <= bitmap.Width && textSize.Height <= bitmap.Height) { break; } } } imageFrom = new Bitmap(textSize.Width, textSize.Height); downGraphics = Graphics.FromImage(imageFrom); downGraphics.DrawString(text, _font, _brush, new Point(0, 0)); var opacityValue = opacity / 10.0F; float[][] matrix = { new float[] { 1, 0, 0, 0, 0 }, new float[] { 0, 1, 0, 0, 0 }, new float[] { 0, 0, 1, 0, 0 }, new[] { 0, 0, 0, opacityValue, 1 }, new float[] { 0, 0, 0, 0, 1 } }; var colorMatrix = new ColorMatrix(matrix); var imageAttribute = new ImageAttributes(); imageAttribute.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); if (text == "") { throw new NullReferenceException("Resmin üstüne konacak yazı girilmemiş."); } if (directionOption == 0) { throw new NullReferenceException("Yazının resmin neresine yerleştirileceği belirlenmedi."); } var graphicsFromImage = Graphics.FromImage(bitmap); graphicsFromImage.InterpolationMode = InterpolationMode.High; var pointTo = new Point(); switch (directionOption) { case DirectionOption.TopRight: pointTo.X = bitmap.Width - imageFrom.Width; pointTo.Y = 0; break; case DirectionOption.BottomLeft: pointTo.X = 0; pointTo.Y = bitmap.Height - imageFrom.Height; break; case DirectionOption.TopLeft: pointTo.X = 0; pointTo.Y = 0; break; case DirectionOption.BottomRight: pointTo.X = bitmap.Width - imageFrom.Width; pointTo.Y = bitmap.Height - imageFrom.Height; break; case DirectionOption.MiddleRight: pointTo.X = bitmap.Width - imageFrom.Width; pointTo.Y = bitmap.Height - (imageFrom.Height - (imageFrom.Height / 2)); break; case DirectionOption.MiddleLeft: pointTo.X = 0; pointTo.Y = bitmap.Height - (imageFrom.Height - (imageFrom.Height / 2)); break; case DirectionOption.TopCenter: pointTo.X = bitmap.Width - (imageFrom.Width - (imageFrom.Width / 2)); pointTo.Y = 0; break; case DirectionOption.BottomCenter: pointTo.X = bitmap.Width - (imageFrom.Width - (imageFrom.Width / 2)); pointTo.Y = bitmap.Height - imageFrom.Height; break; case DirectionOption.Center: pointTo.X = (bitmap.Width / 2) - (imageFrom.Width / 2); pointTo.Y = (bitmap.Height / 2) - (imageFrom.Height / 2); break; default: pointTo.X = 0; pointTo.Y = 0; break; } //1. parametre imageFrom:(soyut olarak)eklenecek resim //2. parametre new Rectangle(pointTo, imageFrom.Size): grafik nesnemizin hangi noktasından itibaren hangi size da resim ekleneceğini gösteren dikdörtgen //3. ve 4. parametre 0,0: eklenecek resmin hangi noktasından itibaren çizileceği (yani 1. parametrede alınan fotoğrafı hangi noktasından itibaren ekleyeceğiz) //5. ve 6. parametre imageFrom.Width, imageFrom.Height: resim eklenen dikdörtgenin içine hangi boyutlarda eklecek daha küçük değer verilirse resim küçültülerek eklenir //7. parametre GraphicsUnit.Pixel: ölçü birimi olrak ne kullanılcak //8. parametre imageAttribute: yukarıda belirlenen renk matrix ine göre çizilecek graphicsFromImage.DrawImage(imageFrom, new Rectangle(pointTo, imageFrom.Size), 0, 0, imageFrom.Width, imageFrom.Height, GraphicsUnit.Pixel, imageAttribute); return(bitmap); } }
/// <summary> /// Bir bitmap dosyasının istenen bir yerine, bir başka bitmap dosyasını eklemek için kullanılır. /// </summary> /// <param name="imageFrom">Ana resmi ifade eder.</param> /// <param name="imageTo">Üzerine eklenecek resmi ifade eder</param> /// <param name="opacity">Üzerine eklenecek resmin opasitesini ifade eder.</param> /// <param name="imageDirection">Resmin nereye ekleneceğini belirtir.</param> /// <returns>Bitmap</returns> public static Bitmap AddImageToImage(Bitmap imageFrom, Bitmap imageTo, int opacity, DirectionOption imageDirection) { if (imageFrom == null) { throw new NullReferenceException("Üzerine resim konacak olan Bitmap dosyası girilmedi."); } if (imageTo == null) { throw new NullReferenceException("Bitmap dosyasının üzerine konulacak olan diğer bitmap dosyası girilmedi."); } if (imageDirection == 0) { throw new NullReferenceException("Yazının resmin neresine yerleştirileceği belirlenmedi."); } var pointTo = new Point(); var opacityValue = opacity / 10.0F; float[][] matrix = { new float[] { 1, 0, 0, 0, 0 }, new float[] { 0, 1, 0, 0, 0 }, new float[] { 0, 0, 1, 0, 0 }, new[] { 0, 0, 0, opacityValue, 1 }, new float[] { 0, 0, 0, 0, 1 } }; var colorMatrix = new ColorMatrix(matrix); var imageAttributes = new ImageAttributes(); imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); var graphicsFromImage = Graphics.FromImage(imageTo); graphicsFromImage.InterpolationMode = InterpolationMode.High; DirectionSet(imageDirection, imageTo, imageFrom.Width, imageFrom.Height); pointTo.X = _leftCoordinate; pointTo.Y = _topCoordinate; graphicsFromImage.DrawImage(imageFrom, new Rectangle(pointTo, imageFrom.Size), 0, 0, imageFrom.Width, imageFrom.Height, GraphicsUnit.Pixel, imageAttributes); return(imageTo); }
/// <summary> /// Bitmap dosyasının üzerindeki bir noktayı parametre olarak ifade eder. /// </summary> /// <param name="directionOption">Enum olarak yönleri ifade eder.</param> /// <param name="bitmap">Bitmap olarak gönderilen dosyayı ifade eder.</param> /// <param name="newWidth">Bitmap olarak eklenecek objenin genişliğini ifade eder.</param> /// <param name="newHeight">Bitmap olarak eklenecek objenin yüksekliğini ifade eder.</param> private static void DirectionSet(DirectionOption directionOption, Bitmap bitmap, int newWidth, int newHeight) { switch (directionOption) { case DirectionOption.TopLeft: _leftCoordinate = 0; _topCoordinate = 0; break; case DirectionOption.TopCenter: _leftCoordinate = Convert.ToInt32(Math.Round(bitmap.Width / (float)2)); _topCoordinate = 0; break; case DirectionOption.TopRight: _leftCoordinate = bitmap.Width - newWidth; _topCoordinate = 0; break; case DirectionOption.BottomLeft: _leftCoordinate = 0; _topCoordinate = bitmap.Height - newHeight; break; case DirectionOption.BottomCenter: _leftCoordinate = Convert.ToInt32(Math.Round(bitmap.Width / (float)2)); _topCoordinate = bitmap.Height; break; case DirectionOption.BottomRight: _leftCoordinate = bitmap.Width; _topCoordinate = bitmap.Height - newHeight; break; case DirectionOption.MiddleLeft: _leftCoordinate = 0; _topCoordinate = Convert.ToInt32(Math.Round(bitmap.Height / (float)2)); break; case DirectionOption.MiddleRight: _leftCoordinate = bitmap.Width; _topCoordinate = Convert.ToInt32(Math.Round(bitmap.Height / (float)2)); break; case DirectionOption.Center: _leftCoordinate = Convert.ToInt32(Math.Round((bitmap.Width / (float)2)) - newWidth / (float)2); _topCoordinate = Convert.ToInt32(Math.Round((bitmap.Height / (float)2)) - newHeight / (float)2); break; case DirectionOption.Right: break; case DirectionOption.Left: break; case DirectionOption.Top: break; case DirectionOption.Bottom: break; case DirectionOption.Middle: break; default: throw new ArgumentOutOfRangeException(nameof(directionOption), directionOption, null); } }
public static Position GetNextPosition(Position pos, DirectionOption dO) { sbyte[] coords = pos.Coordinates; coords[dO.AxisNumber] += dO.Direction; return(new Position(coords)); }
public HistoryProduct(int id, string nm, double prc, int qntt, DirectionOption productTransferDirection) : base(id, nm, prc, qntt) { this.ProductTransferDirection = productTransferDirection; }