本文整理汇总了C#中MatterHackers.Agg.Image.ImageBuffer.GetPixelPointerY方法的典型用法代码示例。如果您正苦于以下问题:C# ImageBuffer.GetPixelPointerY方法的具体用法?C# ImageBuffer.GetPixelPointerY怎么用?C# ImageBuffer.GetPixelPointerY使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MatterHackers.Agg.Image.ImageBuffer
的用法示例。
在下文中一共展示了ImageBuffer.GetPixelPointerY方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Save
static public bool Save(ImageBuffer image, Stream streamToSaveImageDataTo)
{
STargaHeader TargaHeader;
BinaryWriter writerToSaveTo = new BinaryWriter(streamToSaveImageDataTo);
int SourceDepth = image.BitDepth;
// make sure there is something to save before opening the file
if (image.Width <= 0 || image.Height <= 0)
{
return false;
}
// set up the header
TargaHeader.PostHeaderSkip = 0; // no skip after the header
if (SourceDepth == 8)
{
TargaHeader.ColorMapType = 1; // Color type is Palette
TargaHeader.ImageType = 9; // 1 = Palette, 9 = RLE Palette
TargaHeader.ColorMapStart = 0;
TargaHeader.ColorMapLength = 256;
TargaHeader.ColorMapBits = 24;
}
else
{
TargaHeader.ColorMapType = 0; // Color type is RGB
#if WRITE_RLE_COMPRESSED
TargaHeader.ImageType = 10; // RLE RGB
#else
TargaHeader.ImageType = 2; // RGB
#endif
TargaHeader.ColorMapStart = 0;
TargaHeader.ColorMapLength = 0;
TargaHeader.ColorMapBits = 0;
}
TargaHeader.XStart = 0;
TargaHeader.YStart = 0;
TargaHeader.Width = (ushort)image.Width;
TargaHeader.Height = (ushort)image.Height;
TargaHeader.BPP = (byte)SourceDepth;
TargaHeader.Descriptor = 0; // all 8 bits are used for alpha
TargaHeader.BinaryWrite(writerToSaveTo);
byte[] pLineBuffer = new byte[image.StrideInBytesAbs() * 2];
//int BytesToSave;
switch (SourceDepth)
{
case 8:
/*
if (image.HasPalette())
{
for(int i=0; i<256; i++)
{
TGAFile.Write(image.GetPaletteIfAllocated()->pPalette[i * RGB_SIZE + RGB_BLUE]);
TGAFile.Write(image.GetPaletteIfAllocated()->pPalette[i * RGB_SIZE + RGB_GREEN]);
TGAFile.Write(image.GetPaletteIfAllocated()->pPalette[i * RGB_SIZE + RGB_RED]);
}
}
else
*/
{ // there is no palette for this DIB but we should write something
for (int i = 0; i < 256; i++)
{
writerToSaveTo.Write((byte)i);
writerToSaveTo.Write((byte)i);
writerToSaveTo.Write((byte)i);
}
}
for (int i = 0; i < image.Height; i++)
{
int bufferOffset;
byte[] buffer = image.GetPixelPointerY(i, out bufferOffset);
#if WRITE_RLE_COMPRESSED
BytesToSave = CompressLine8(pLineBuffer, buffer, bufferOffset, image.Width());
writerToSaveTo.Write(pLineBuffer, 0, BytesToSave);
#else
writerToSaveTo.Write(buffer, bufferOffset, image.Width);
#endif
}
break;
case 24:
for (int i = 0; i < image.Height; i++)
{
int bufferOffset;
byte[] buffer = image.GetPixelPointerY(i, out bufferOffset);
#if WRITE_RLE_COMPRESSED
BytesToSave = CompressLine24(pLineBuffer, buffer, bufferOffset, image.Width());
writerToSaveTo.Write(pLineBuffer, 0, BytesToSave);
#else
writerToSaveTo.Write(buffer, bufferOffset, image.Width * 3);
#endif
}
break;
case 32:
for (int i = 0; i < image.Height; i++)
//.........这里部分代码省略.........