Closed Friman04 closed 1 year ago
你给了两张效果图片,我的理解是:第一张是代码实际的运行效果,第二张是你期望的运行效果,对吗?我暂且这么理解。
你问的问题是有关图片加载的问题,但是你却只给代码,不给图片资源,这让我很困扰。我不知道你的图片路径是否正确,也不知道图片是否带有透明度。
以下是我只根据代码进行的推断。 你的代码中有一行:
//logo
canvas_main.Load_Image_Alpha(L"sprites/logo_light.png", 0, 0, false, WINDOW_WID * EX_LEFT - 1, WINDOW_WID * EX_LEFT - 1, 255U, true);
在此处,你调用 Canvas::Load_Image_Alpha 时,设置了参数 bUseSrcColor(也就是最后一个参数)为 true,试试设为 false? 或者,将上面那行代码改为:
// 尝试先把图片加载到 IMAGE 中,再输出到画布
// 如果还是不行,可以打断点看看 imgLogo 到底是否读入了图片
// 若 imgLogo 的宽高为 0,则说明读入失败
IMAGE imgLogo;
loadimage(&imgLogo, L"sprites/logo_light.png");
canvas_main.PutImageIn_Alpha(0, 0, &imgLogo);
如果问题还没有解决,希望你可以把项目打包发出来(打包时记得删去 .vs,debug,release,x64 等无关文件夹),否则,只有源代码,我无法运行你的程序。
大一新生,刚学C语言没多久,没学过C++
`/***
***/
define _CRT_SECURE_NO_WARNINGS
include
include
include
define MAX_LEN 4096
include
include
include "HiEasyX.h"
//#include
ifdef UNICODE //设置多字节字符集
undef UNICODE
endif
// 窗体大小
define ASPECT_RATIO 1.778 // 宽高比
define WINDOW_HEI 720 // 窗体高度大小
define WINDOW_WID WINDOW_HEI*ASPECT_RATIO // 窗体宽度大小
define PHI 0.618
define EX_LEFT (PHI - 0.5) / 2
define MID_LEFT (1 - PHI) / 2
// 字体居中
define TOP_LEFT 1
define TOP 2
define TOP_RIGHT 3
define LEFT 4
define CENTER 5
define RIGHT 6
define BOTTOM_LEFT 7
define BOTTOM 8
define BOTTOM_RIGHT 9
char token; // 未使用
typedef struct { char id[16]; char pwd[20]; int value1; int value2; int sex; }user;
typedef struct {int x, y;}intPair;
// 函数区
/**
/**
/**
@param[in] ori 每个字符的书写角度(单位0.1°) */ void textAlign(hiex::Canvas& canvas, LPCTSTR str, int fHeight, int fWidth, LPCTSTR font, int pivot_x, int pivot_y, int wid, int hei, int align_mode = CENTER, COLORREF c = BLACK, LONG esc = 0, LONG ori = 0, int bg = TRANSPARENT) { // 锚点应设置在区域的左上角 canvas.SetTextEscapement(esc); canvas.SetTextOrientation(ori); canvas.SetBkMode(bg); canvas.SetTextStyle(fHeight, fWidth, font);
intPair text_pos = align(pivot_x, pivot_y, wid, hei, canvas.TextWidth(str), canvas.TextHeight(str), align_mode); canvas.OutTextXY(text_pos.x, text_pos.y, str, true, c); }
/**
@param[in] ori 每个字符的书写角度(单位0.1°) */ void __TextAlign(hiex::Canvas & canvas, LPCTSTR str, int fHeight, int fWidth, LPCTSTR font, int pivot_x, int pivot_y, int wid, int hei, int align_mode = CENTER, COLORREF c = BLACK, LONG esc = 0, LONG ori = 0, int bg = TRANSPARENT) { // 锚点应设置在区域的左上角
canvas.SetTextEscapement(esc); canvas.SetTextOrientation(ori); canvas.SetBkMode(bg); canvas.SetTextStyle(fHeight, fWidth, font); switch (align_mode) { case 1: canvas.OutTextXY(pivot_x, pivot_y, str, true, c); break; case 2: canvas.OutTextXY( pivot_x + wid / 2 - canvas.TextWidth(str) / 2, pivot_y, str, true, c); break; case 3: canvas.OutTextXY( pivot_x + wid - canvas.TextWidth(str), pivot_y, str, true, c); break; case 4: canvas.OutTextXY( pivot_x, pivot_y + wid / 2 - canvas.TextHeight(str) / 2, str, true, c); break; case 5: canvas.OutTextXY( pivot_x + wid / 2 - canvas.TextWidth(str) / 2, pivot_y + hei / 2 - canvas.TextHeight(str) / 2, str, true, c); break; case 6: canvas.OutTextXY( pivot_x + wid - canvas.TextWidth(str), pivot_y + hei / 2 - canvas.TextHeight(str) / 2, str, true, c); break; case 7: canvas.OutTextXY( pivot_x, pivot_y + hei - canvas.TextHeight(str), str, true, c); break;
case 8: canvas.OutTextXY( pivot_x + wid / 2 - canvas.TextWidth(str) / 2, pivot_y + hei - canvas.TextHeight(str), str, true, c); break; case 9: canvas.OutTextXY( pivot_x + wid - canvas.TextWidth(str), pivot_y + hei - canvas.TextHeight(str), str, true, c); break; } }
/**
@param[in] vertical 是否垂直居中(默认是) */ void __textAlign(LPCTSTR str, int x, int y, int width, int height, bool horizontal = true, bool vertical = true, int mode = TRANSPARENT) {
LOGFONT font; setbkmode(mode); gettextstyle(&font); int textHeight = font.lfHeight; int textWidth = textHeight; int strWidth = 0; int strNum = lstrlen(str); for (int i = 0; i < strNum; ++i) strWidth += (str[i] > 127) ? textHeight : textHeight / 2; if (strWidth >= width || textHeight >= height) { outtextxy(x, y, str); return; } if (horizontal) x += (width - strWidth) / 2; if (vertical) y += (height - textHeight) / 2; outtextxy(x, y, str); }
//--------------------------------------------------------------------------------------------------------------------------------- // 出问题的函数 //---------------------------------------------------------------------------------------------------------------------------------
void home() {
}
int main() {
}` 左上角图片不显示 左上角t图片显示