本文整理汇总了C#中Nikse.SubtitleEdit.Logic.NikseBitmap.AddTransparentLineRight方法的典型用法代码示例。如果您正苦于以下问题:C# NikseBitmap.AddTransparentLineRight方法的具体用法?C# NikseBitmap.AddTransparentLineRight怎么用?C# NikseBitmap.AddTransparentLineRight使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Nikse.SubtitleEdit.Logic.NikseBitmap
的用法示例。
在下文中一共展示了NikseBitmap.AddTransparentLineRight方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SplitHorizontalNew
private static IEnumerable<ImageSplitterItem> SplitHorizontalNew(ImageSplitterItem lineSplitterItem, int xOrMorePixelsMakesSpace)
{
var bmp = new NikseBitmap(lineSplitterItem.NikseBitmap);
bmp.AddTransparentLineRight();
var parts = new List<ImageSplitterItem>();
int startX = 0;
int width = 0;
int spacePixels = 0;
int subtractSpacePixels = 0;
for (int x = 0; x < bmp.Width; x++)
{
bool right;
bool clean;
List<Point> points = IsVerticalLineTransparetNew(bmp, x, out right, out clean);
if (points != null && clean)
{
spacePixels++;
}
if (right && points != null)
{
int add = FindMaxX(points, x) - x;
width = width + add;
subtractSpacePixels = add;
}
if (points == null)
{
width++;
}
else if (width > 1)
{
var bmp0 = new NikseBitmap(bmp);
// remove pixels after current;
int k = 0;
foreach (Point p in points)
{
bmp0.MakeVerticalLinePartTransparent(p.X, p.X + k, p.Y);
k++;
}
width = FindMaxX(points, x) - startX;
width++;
NikseBitmap b1 = bmp0.CopyRectangle(new Rectangle(startX, 0, width, bmp.Height));
if (spacePixels >= xOrMorePixelsMakesSpace && parts.Count > 0)
parts.Add(new ImageSplitterItem(" "));
int addY;
b1 = CropTopAndBottom(b1, out addY);
parts.Add(new ImageSplitterItem(startX + lineSplitterItem.X, addY + lineSplitterItem.Y, b1)); //y is what?
// remove pixels before next letter;
int begin = 0;
foreach (Point p in points)
{
bmp.MakeVerticalLinePartTransparent(begin, p.X, p.Y);
}
width = 1;
startX = FindMinX(points, x);
spacePixels = -subtractSpacePixels;
subtractSpacePixels = 0;
}
else
{
width = 1;
startX = FindMinX(points, x);
}
}
return parts;
}