本文整理汇总了C++中wxImage::Create方法的典型用法代码示例。如果您正苦于以下问题:C++ wxImage::Create方法的具体用法?C++ wxImage::Create怎么用?C++ wxImage::Create使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxImage
的用法示例。
在下文中一共展示了wxImage::Create方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TransferToWx
void TransferToWx(const Map& map, wxImage& wx)
{
wx.Create(map.width * 8, map.height * 8);
if (map.tileset->bpp == 4)
{
for (unsigned int i = 0; i < map.data.size(); i++)
{
int x = i % map.width;
int y = i / map.width;
int tile_id = map.data[i] & 0x3FF;
int pal_id = (map.data[i] >> 12) & 0xF;
const Tile& tile = map.tileset->tilesExport[tile_id];
const PaletteBank& palette = map.tileset->paletteBanks[pal_id];
for (unsigned int j = 0; j < TILE_SIZE; j++)
{
unsigned char pix = tile.pixels[j];
if (!pix) continue;
const auto& c = palette.At(pix);
wx.SetRGB(x * 8 + j % 8, y * 8 + j / 8, c.r << 3, c.g << 3, c.b << 3);
}
}
}
else
{
for (unsigned int i = 0; i < map.data.size(); i++)
示例2: InitializeTexture
void InitializeTexture(int w, int h)
{
glGenTextures(1, &g_texture);
glBindTexture(GL_TEXTURE_2D, g_texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
g_image.Create(w, h, false /* don't clear */);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0,
GL_RGB, g_image.GetWidth(), g_image.GetHeight(), 0,
GL_RGB, GL_UNSIGNED_BYTE, g_image.GetData());
}
示例3: convertCVMatToWxImage
void OpenCVHelper::convertCVMatToWxImage(const cv::Mat &cvimg, wxImage &img)
{
if(!img.IsOk()
|| img.GetWidth() != cvimg.cols
|| img.GetHeight() != cvimg.rows)
{
img.Create(cvimg.cols, cvimg.rows, false);
}
const cv::Vec3b *cvPtr = cvimg.ptr<cv::Vec3b>(0);
unsigned char *wxPtr = img.GetData();
for(int y = 0; y < img.GetHeight(); y++)
{
for(int x = 0; x < img.GetWidth(); x++)
{
/* localPreviewImage.SetRGB(x, y, img_outcv.at<cv::Vec3b>(y, x)[2],
img_outcv.at<cv::Vec3b>(y, x)[1],
img_outcv.at<cv::Vec3b>(y, x)[0]);*/
*(wxPtr++) = (*cvPtr)[2];
*(wxPtr++) = (*cvPtr)[1];
*(wxPtr++) = (*cvPtr)[0];
cvPtr++;
}
}
}
示例4: dcm2img
void dcm2img(boost::filesystem::path filename, int clientWidth, int clientHeight, wxImage &image)
{
OFLog::configure(OFLogger::OFF_LOG_LEVEL);
unsigned char *source = NULL;
try
{
DcmFileFormat dfile;
if (dfile.loadFile(filename.c_str(), EXS_Unknown, EGL_withoutGL).bad())
throw std::runtime_error("");
if(dfile.loadAllDataIntoMemory().bad())
throw std::runtime_error("");
// uncompress
DicomImage di(&dfile, EXS_Unknown);
if(di.getStatus() != EIS_Normal)
throw std::runtime_error("");
di.getFirstFrame();
di.showAllOverlays();
if (di.isMonochrome())
{
if(di.getWindowCount())
di.setWindow(0);
else
di.setHistogramWindow();
}
// don't use di.createScaledImage, it is broken!!
unsigned int width = di.getWidth();
unsigned int height = di.getHeight();
if(!image.Create(width, height, true))
throw std::runtime_error("");
source = new unsigned char[width * height * 4];
di.createWindowsDIB((void * &)source, width * height * 4, 0, 32);
wxImagePixelData data(image);
wxImagePixelData::Iterator p(data);
for(int j = 0; j < height; j++)
{
for(int i = 0; i < width; i++)
{
p.MoveTo(data, i, j);
p.Red() = source[(width * j + i) * 4 + 2];
p.Green() = source[(width * j + i) * 4 + 1];
p.Blue() = source[(width * j + i) * 4];
}
}
// scale
float widthFactor = (float) clientWidth / (float) width;
float heightFactor = (float) clientHeight / (float) height;
float scaleFactor = 0;
if (widthFactor < heightFactor)
scaleFactor = widthFactor;
else
scaleFactor = heightFactor;
int scaledWidth = width * scaleFactor;
int scaledHeight = height * scaleFactor;
image.Rescale(scaledWidth, scaledHeight);
}
catch(...)
{
}
if(source != NULL)
delete source;
}
示例5: ScaleImage
wxImage ScaleImage(wxImage image, double source_scale_factor, double content_scale_factor,
wxSize output_size, wxRect usable_rect, LSIFlags flags,
const wxColour& fill_color)
{
if (!image.IsOk())
{
wxFAIL_MSG("WxUtils::ScaleImage expects a valid image.");
return image;
}
if (content_scale_factor != 1.0)
{
output_size *= content_scale_factor;
usable_rect.SetPosition(usable_rect.GetPosition() * content_scale_factor);
usable_rect.SetSize(usable_rect.GetSize() * content_scale_factor);
}
// Fix the output size if it's unset.
wxSize img_size = image.GetSize();
if (output_size.GetWidth() < 1)
output_size.SetWidth(
static_cast<int>(img_size.GetWidth() * (content_scale_factor / source_scale_factor)));
if (output_size.GetHeight() < 1)
output_size.SetHeight(
static_cast<int>(img_size.GetHeight() * (content_scale_factor / source_scale_factor)));
// Fix the usable rect. If it's empty then the whole canvas is usable.
if (usable_rect.IsEmpty())
{
// Constructs a temp wxRect 0,0->output_size then move assigns it.
usable_rect = output_size;
}
else if (!usable_rect.Intersects(output_size))
{
wxFAIL_MSG("Usable Zone Rectangle is not inside the canvas. Check the output size is correct.");
image.Create(1, 1, false);
image.SetRGB(0, 0, fill_color.Red(), fill_color.Green(), fill_color.Blue());
if (fill_color.Alpha() == wxALPHA_TRANSPARENT)
image.SetMaskColour(fill_color.Red(), fill_color.Green(), fill_color.Blue());
usable_rect = output_size;
}
// Step 1: Scale the image
if ((flags & LSI_SCALE) != LSI_SCALE_NONE)
{
if (flags & LSI_SCALE_NO_ASPECT)
{
// Stretch scale without preserving the aspect ratio.
bool scale_width = (img_size.GetWidth() > usable_rect.GetWidth() && flags & LSI_SCALE_DOWN) ||
(img_size.GetWidth() < usable_rect.GetWidth() && flags & LSI_SCALE_UP);
bool scale_height =
(img_size.GetHeight() > usable_rect.GetHeight() && flags & LSI_SCALE_DOWN) ||
(img_size.GetHeight() < usable_rect.GetHeight() && flags & LSI_SCALE_UP);
if (scale_width || scale_height)
{
// NOTE: Using BICUBIC instead of HIGH because it's the same internally
// except that downscaling uses a box filter with awful obvious aliasing
// for non-integral scale factors.
image.Rescale(scale_width ? usable_rect.GetWidth() : img_size.GetWidth(),
scale_height ? usable_rect.GetHeight() : img_size.GetHeight(),
wxIMAGE_QUALITY_BICUBIC);
}
}
else
{
// Scale while preserving the aspect ratio.
double scale = std::min(static_cast<double>(usable_rect.GetWidth()) / img_size.GetWidth(),
static_cast<double>(usable_rect.GetHeight()) / img_size.GetHeight());
int target_width = static_cast<int>(img_size.GetWidth() * scale);
int target_height = static_cast<int>(img_size.GetHeight() * scale);
// Bilinear produces sharper images when upscaling, bicubic tends to smear/blur sharp edges.
if (scale > 1.0 && flags & LSI_SCALE_UP)
image.Rescale(target_width, target_height, wxIMAGE_QUALITY_BILINEAR);
else if (scale < 1.0 && flags & LSI_SCALE_DOWN)
image.Rescale(target_width, target_height, wxIMAGE_QUALITY_BICUBIC);
}
img_size = image.GetSize();
}
// Step 2: Resize the canvas to match the output size.
// NOTE: If NOT using LSI_SCALE_DOWN then this will implicitly crop the image
if (img_size != output_size || usable_rect.GetPosition() != wxPoint())
{
wxPoint base = usable_rect.GetPosition();
if (flags & LSI_ALIGN_HCENTER)
base.x += (usable_rect.GetWidth() - img_size.GetWidth()) / 2;
else if (flags & LSI_ALIGN_RIGHT)
base.x += usable_rect.GetWidth() - img_size.GetWidth();
if (flags & LSI_ALIGN_VCENTER)
base.y += (usable_rect.GetHeight() - img_size.GetHeight()) / 2;
else if (flags & LSI_ALIGN_BOTTOM)
base.y += usable_rect.GetHeight() - img_size.GetHeight();
int r = -1, g = -1, b = -1;
if (fill_color.Alpha() != wxALPHA_TRANSPARENT)
{
r = fill_color.Red();
g = fill_color.Green();
b = fill_color.Blue();
}
//.........这里部分代码省略.........