Как Вы Рисуете Прозрачное изображение с помощью Системы. Рисование?

попробуйте использовать этот кодовый помощник

var mongoose = require('mongoose');

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://10.7.0.3:27107/data/TodoApp'); 
11
задан Chris Pietschmann 9 October 2008 в 22:10
поделиться

4 ответа

К сожалению, нет никакого простого способа создать прозрачного Gif, использующего Растровый объект. (См. эту статью KB),

Можно альтернативно использовать формат PNG, который поддерживает прозрачность с кодом, который Вы используете.

5
ответ дан 3 December 2019 в 06:48
поделиться

Это возможно, но не легко
Если Вы можете использовать небезопасный код в своем проекте, существует несколько методов для использования указателей, чтобы разорваться через таблицу цветов и заставить прозрачность работать.

Образец формируется, приложение Bob Powell доступно здесь http://www.bobpowell.net/giftransparency.htm. Я использовал вариацию на этот метод на веб-обработчике несколько лет назад, который становился пораженным приблизительно 10 миллионов раз в месяц, и это, казалось, хорошо работало.

Если Вы только используете ограниченный цвет pallete, можно уменьшить обработку таблицы цветов до просто цветов, в которых Вы нуждаетесь (не может помнить точно, как я сделал это...).

Однако png является метрикой crapload легче.

4
ответ дан 3 December 2019 в 06:48
поделиться

Да, как Jerome заявил, там не должен так или иначе создавать использование прозрачного GIF Растрового объекта. Гадьте!

Ну, так или иначе я изменил свой код для генерации PNG и всех работ как ожидалось.

Существует одна маленькая работа вокруг, я должен был сделать, так как Вы не можете записать PNG непосредственно в OutputStream. Я должен был записать PNG в MemoryStream и затем выписать это к OutputStream.

Вот заключительный код для моей реализации:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles Me.Load
    '' Change the response headers to output a JPEG image.
    Response.Clear()
    Response.ContentType = "image/png"

    Dim width = 11
    Dim height = width

    '' Create a new 32-bit bitmap image
    Dim b = New Bitmap(width, height)

    '' Create Grahpics object for drawing
    Dim g = Graphics.FromImage(b)

    '' Fill the image with a color to be made Transparent after drawing is finished.
    g.Clear(Color.Gray)

    '' Get rectangle where the Circle will be drawn
    Dim rect = New Rectangle(0, 0, width - 1, height - 1)

    '' Draw Circle Border
    Dim bPen = Pens.Black
    g.DrawPie(bPen, rect, 0, 365)

    '' Fill in Circle
    Dim cbrush = New SolidBrush(Color.Red)
    g.FillPie(cbrush, rect, 0, 365)

    '' Clean up
    g.Flush()
    g.Dispose()

    '' Make Transparent
    b.MakeTransparent(Color.Gray)

    '' Write PNG to Memory Stream then write to OutputStream
    Dim ms = New MemoryStream()
    b.Save(ms, Imaging.ImageFormat.Png)
    ms.WriteTo(Response.OutputStream)

    Response.Flush()
    Response.End()
End Sub
7
ответ дан 3 December 2019 в 06:48
поделиться

Firebug или Google's Page Speed for Firefox имеют инструменты профилирования.

-121--1456248-

Нет, это необходимо сделать в коде. Смотрите этот вопрос.

-121--2568323-

Вот некий код, который должен иметь gif (который уже имеет прозрачность в нем) преобразован (предполагается, что вы хотите изменить его размер) в растровое изображение, а затем может быть показан правильно с его прозрачности.

imagePath = System.Web.HttpContext.Current.Request.MapPath(libraryPath + reqImageFile);
System.Drawing.Image image = null;
Bitmap resizedImage = null;

if (reqWidth == 0) { reqWidth = image.Width; }
if (reqHeight == 0) { reqHeight = image.Height; }
image = System.Drawing.Image.FromFile(imagePath);
reqWidth = image.Width;
reqHeight = image.Height;

//here is the transparency 'special' treatment
resizedImage = new Bitmap(reqWidth, reqHeight, PixelFormat.Format8bppIndexed);
ColorPalette pal = resizedImage.Palette;
for (int i = 0; i < pal.Entries.Length; i++)
{
       Color col = pal.Entries[i];
       pal.Entries[i] = Color.FromArgb(0, col.R, col.G, col.B);
}
resizedImage.Palette = pal;
BitmapData src = ((Bitmap)image).LockBits(new Rectangle(0, 0, reqWidth, reqHeight),  ImageLockMode.ReadOnly, image.PixelFormat);
BitmapData dst = resizedImage.LockBits(new Rectangle(0, 0, resizedImage.Width, resizedImage.Height),
ImageLockMode.WriteOnly, resizedImage.PixelFormat);
((Bitmap)image).UnlockBits(src);
resizedImage.UnlockBits(dst);

Удачи!

Грегуар Лафортюн

2
ответ дан 3 December 2019 в 06:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: