C・C++・C#

全26346件中1~20件表示
  • 報酬付き

    C++ デスクトップアプリケーションで作る電子印鑑

    C#で透過画像を扱おうとしたら、全然うまくいかなかったので、C++で作ることにしました。(↓この質問でいただいた提案でC++で作っております) https://okwave.jp/qa/q10234511.html やりたいこと: ボタンクリックで画像をコピー 透過画像を扱いたくベクター形式で図形描画 ビットマップ:ラスター変換後、白背景 メタファイル:透過背景 ラジオボタンで選択式。 VS2022でプロジェクトを作成し、Win デスクトップアプリケーションを選んで生成されたコードをそのまま使用しています。 で、今、基本的な図形描画(ベクター形式)とボタンでのクリップボードにコピーまでやりました。 しかし、C#で起きた問題と似たことが起こっています。 問題:透過画像をメタファイルでクリップボードにコピーして、Adobe PDFに貼り付けができない。 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { ※これの中に入っています。Copilotのコード内容カスタムしているだけなので、デフォルトのコードを全部理解できているわけではありません。「動けばいいや」くらいです。 Copilot(ChatGPTもGeminiも凝りました)の力を借りて、↓ここまでできましたが、肝心の貼り付けができません。ラジオボタンのif文の中ですので、抜粋しています。DrawContentはただの円の枠(DrawEllipseで描画)です。 // 描画内容をメタファイルに保存 HDC hdc = GetDC(hWnd); RECT rect; GetClientRect(hWnd, &rect); Metafile metafile(hdc); Graphics graphics(&metafile); // 描画内容を関数で行う DrawContent(graphics); // メタファイルのハンドルを取得 HENHMETAFILE hEmf = metafile.GetHENHMETAFILE(); // メタファイルをクリップボードにコピー OpenClipboard(hWnd); EmptyClipboard(); SetClipboardData(CF_ENHMETAFILE, hEmf); CloseClipboard(); // リソースを解放 ReleaseDC(hWnd, hdc); クリップボードの画像を解析すると、 EnhancedMetafile MetafilePict 2種類あり、クリップボードへのコピー自体はできているようですが、Office系にも貼り付けができません。 ビットマップにすると問題なく動いております。 正直なところ、WPFで作りたいところ(ベクター画像がキレイ)なんですが… 知見をお持ちの方、よろしくお願いいたします…

  • 報酬付き

    zig言語が難しい

    みんな簡単簡単っていうけど難しい… zig>>>rust>>haskell>c>go>python>lisp って感じ… なんなんですか?zigはいったい。

  • 【NVIDIA Developer CUDA To

    【NVIDIA Developer CUDA Toolkit】エヌベディアのCUDAはIDEですか?プログラマーのコーディングを助ける開発環境エディタなのでしょうか? ライバルのIntelにはIDEがないのでしょうか? AI開発はエヌベディアがインテルより優勢なのはハードウェアだけでなくソフトウエアも提供しているからだそうです。 CUDAは何ですか?

  • C#(Windows Form)で作る電子印鑑

    C#で電子印鑑を作っています。 前提として、私はプログラマーではありません。過去に大学の講義でCを受けており、コードの理解はできます。趣味程度でVisualStudio 2022とAIチャットを駆使して作っています。Framework 4.8.1 ChatGPTで限界を感じたので、ここで質問させていただきます。 ※ひたすらChatGPTで質問した後なので、補足がくどい場合があります。ご承知おきください。 ※質問内のコードが有効な方法かは知りません。普通はやらないコードも使ってるかもしれません。藁にも縋る思いです。すでにpng・メタファイル・ChatGPT・Geminiと格闘し続けて3週間以上です 一通りコードを書き終え、白背景で印影をAdobe ReaderのPDF(以下、単純に「PDF」と書きます)にCtrl+Vで貼り付けるところまで実装できました。BMP形式なので割とすんなりでした。もともとある画像を読み込んでいるのではなく、描画はすべてDrawLineやDrawEllipseで実施しています。 この白背景は、ラジオボタンで背景透過画像と切り替えできるようにしています。背景透過画像が肝心です。 今、実装できていないのが、この背景透過画像をPDFにCtrl+Vで貼り付ける動作です。 PDFに背景透過画像を貼り付けるコードにできますでしょうか?拡張メタファイル形式でコピーできれば貼り付けられると思うのですが… 下にも書きますが、Office系には背景透過画像の貼り付けが成功しています。 今のコードが以下です。if文内なので、usingでくくってます。ボタンクリックでクリップボードコピーです。 名前空間 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System.Globalization; using System.IO; using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Windows.Forms; using System.Runtime.InteropServices; if文分岐内 using (Bitmap bmp = new Bitmap(diameter, diameter, PixelFormat.Format32bppArgb)){ using(Graphics g = Graphics.FromImage(bmp)) { g.Clear(Color.Transparent); DrawGraphics(g, h, x, y); (DrawGraphicsメソッドですべての描画を実施) } bmp.Save(ms, ImageFormat.Png); System.Windows.Forms.IDataObject dataObject = new DataObject(); dataObject.SetData("png", true, ms); Clipboard.SetDataObject(dataObject, true); bmp.Dispose(); ms.Dispose(); } } 透過画像なので、ImageFormatsやSetDataは"png"で指定しています。このまま実行すると、Office系のソフトには正常に透過画像が貼り付けられますが、貼り付け先がPDFだと貼り付けができません。ただし、Office系に貼り付けたあとの背景透過画像をそのままCtrl+Cでコピーし、PDFにCtrl+Vするとなぜか正常に貼り付けられます。Office系でコピーした時点で拡張メタファイルか何かに変換されているのでしょう… そもそも最初のbmpの時点で透過情報消えるやないか、と思っていましたが、Bitmapクラスは透過情報が保持できる?ようです。 そのため、C#のコード内でOffice系に貼り付け後のコピーの動作(おそらくpng→emf変換)を実装しようとしたのですが、 ImageFormats.Emf/SetData("emf")や、 ChatGPTにて ①png→メタファイル ②png→バイト列→メタファイル ③png→bmp→メタファイル(bmpの時点で透過情報が死ぬので不採用ですが、ChatGPTから提案され続けました。) など、すべて不発に終わりました。 ImageFormats.Emf/SetData("emf")、これに関しては、 コード内のbmp.Save(ms, ImageFormat.Emf);これの時点で、すでに変換に失敗しているようです。wmfにしてもダメでした(デバッグ開始でボタンを押すとnullが返ってくる) ラスター画像なので描画自体は少し汚いですが、WPFだと拡張メタファイルやクリップボードをうまく扱えませんでした… コピーの様子をみるためにWPFは途中まで書きましたが、メタファイルの扱いがうまくいきませんでした。私の知識がないだけかもしれませんが、有力な情報もヒットしません… その他情報必要な場合は追加しますので、よろしくお願いいたします。 アプリケーションの使用先OSはWin10/11です。

  • 報酬付き

    共用体、混合型はサポートされないというエラーがです

    Microsoft VS2022でVC++を開発していたところ 下記①,②,③で"共用体名"をマネージ”プロジェクト名::MyForm” のメンバーとして定義できません。混合型はサポートされていませんというエラー(C4368)が発生します。対処法を教えてもらえないでしょうか(Microsoft VS2022) <MyForm.h> .. namespace プロジェクト名 {.. union AB { short int a_1; short int a_2; } .. .. class { union AB u_1;① union AB u_2;② union AB u_3;③ Myform_Load { } Myform_Paint { } }; }

  • 報酬付き

    C言語穴埋め

    C言語の穴埋め答えを教えてください。お願いします。

  • 報酬付き

    アルゴリズムの穴埋め

    アルゴリズムの穴埋めを教えてください。

  • プログラミング言語C++のエラー

    #include <iostream> #include <string> using namespace std; template <typename T> T max(T n1, T n2) { if(n1 > n2) { return n1; } return n2; } int main(){ cout << max<int>(1,2) << endl; cout << max<double>(1.75,3.12) << endl; string s1 = "aiu",s2 = "eo"; cout << max<string>(s1,s2) << endl; return 0; } このコードを入力すると、添付写真のようなエラーが出ます。使用しているのはmacOSのVisual Studio codeです。明らかにいじってはいけない場所のファイル /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include/c++/v1/__algorithm/max.h (添付写真のエラー表示下部のパス)が勝手に参照され、引数が一致してしまっているオーバーロードした関数となってしまいます。maxをMaxなどとすると問題は解決するのですが、既存のコードを編集する際、いちいちmaxでエラーが出ると不便です。 ちなみにテンプレートではなく、引数ごとに関数を作ればエラーは出ません。 解決方法を知っている方が居れば教えてほしいです。

  • Bindingsource.Sortが効かない

    visualstudioでC#を使用しています。 DataGridViewのDataSourceにBindingSourceを使用し、BindingSource.Sortで並び替えを実施しようとしています。 BindingSourceのListやDataGridViewのDataSource.Listを見てみるとソートされているのですが画面には反映されません。。。 BindingSourceのソート関連のプロパティはすべてtrueになっています。 画面の描画に使用しているのはListではないのでしょうか?また、ソートを無効にしてしまうプロパティ等があるのでしょうか? 教えて下さい!お願いします!!

  • C言語3問

    C言語です。この3問のプログラムを教えてください。よろしくお願いします。

  • C言語2問

    C言語です。問題2問のプログラムを教えていただきたいです。

  • C言語のプログラム3問

    C言語です。この3問のプログラムを教えてください。お願いします。

  • C言語 ファイル処理に関する事

    テキストエディタで打ち込んだファイル 【hw.dat】 Akiba 160 59.3 Kurata 162 51.6 Masaki 182 76.5 Tanaka 170 60.7 Tsuji 175 83.9 Washio 175 72.5 名前・身長・体重のデータです。 <問>   「hw.dat」から読み込んだデータを身長順にソートした上で   表示するプログラムを作成せよ。 下記のプログラムでは実行結果が何も出てきません。 入門レベルのスキルしかありません。何処が良くないのでしょうか。 教えて下さい。 [プログラム]   #include <stdio.h>   #include <string.h>   void swap_double(double *x, double *y)   {   int temp = *x;   *x = *y;   *y = temp;   }   void swap_name(char *sx, char *sy)   {   char *temp;    strcpy(temp, sx);   strcpy(sx, sy);   strcpy(sy, temp);   }   void sort(double *he, double *we, int n)   {   int i, j;    for(i = 0; i < n - 1; i++){   if(*(he - 1) > *he ){ swap_double((he - 1), he); swap_double((we - 1), we); } } }   void sort_name(double *he, char *na, int n)   {    int i, j;    for(i = 0; i < n - 1; i++){   if(*(he - 1) > *he ){ swap_name((na - 1), na); } } }  int main(void)   {    FILE *fp;    int ninzu = 0;    char *name[100];    double height, weight;    double hsum = 0.0;    double wsum = 0.0;    int i;    char *na[i];    double he[6];    double we[6];    if ((fp = fopen("hw.dat", "r")) == NULL)    printf("\aファイルをオープンできません。\n");    else{   for(i = 0; i < 6; i++){   while (fscanf(fp, "%s%lf%lf", name , &height , &weight) != EOF ){ *na = *name; he[i] = height; we[i] = weight; ninzu++; hsum += he[i]; wsum += we[i];   printf("%-10s %5.1f %5.1f\n", na, height, weight);   }   }   printf("------------------------\n");   printf("平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu);   }   puts("\n身長順にソートしました。");   for(i = 0; i < 6; i++){ *na = *name; he[i] = height; we[i] = weight; ninzu++; hsum += he[i]; wsum += we[i]; }   for(i = 0; i < 6; i++){   sort(he, we, 6);   sort_name(he, *na, 6);   printf("%-10s %5.1f %5.1f\n", *(na + i) , *(he + i), *(we + i));   }   printf("------------------------\n");   printf("平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu);  fclose(fp);   return 0;  }   

  • C言語 因数分解

    素因数分解する事が出来ません。また間違っている理由がわからないので何をどう直せば良いか理由を付けてご指摘お願いします。

  • C# もっとスマートな書き方教えてください

    Chartコントロールを置き、凡例(Series)を6つ設定しています。 一例ですが、こんなふうに書いてるんですが、ループで回すなどもっと良い書き方無いでしょうか? Series SE1 = new Series(); Series SE2 = new Series(); Series SE3 = new Series(); Series SE4 = new Series(); Series SE5 = new Series(); Series SE6 = new Series(); SE1.ChartType = SeriesChartType.Line; SE2.ChartType = SeriesChartType.Line; SE3.ChartType = SeriesChartType.Line; SE4.ChartType = SeriesChartType.Line; SE5.ChartType = SeriesChartType.Line; SE6.ChartType = SeriesChartType.Line; SE1.MarkerStyle = MarkerStyle.Circle; SE2.MarkerStyle = MarkerStyle.Circle; SE3.MarkerStyle = MarkerStyle.Circle; SE4.MarkerStyle = MarkerStyle.Circle; SE5.MarkerStyle = MarkerStyle.Circle; SE6.MarkerStyle = MarkerStyle.Circle; ・ ・ ・

  • C言語

    これで入れた数字を素因数分解する事が出来ません。また間違っている理由がわからないのでご指摘お願いします。

  • C言語

    次のプログラムは、自然数を入力して,その約数を表示するものである。ブログラム中の0 ~に適するものを答えなさい。ただし,a%bはaをbで割ったときの会りを求める演算 である。 参考 約数とは、入カした自然数に対して,その数を割り切ることのできる整数である。 例えば、6の約数は、1, 2, 3,6となる。 #include <stdio.h> int main (void) int i, num; printf("自然数を入カしてください。"): scanf ("%d", &num); printf("%dの約数は", num) ; for (i =@;i <= num; i++) ( if (num % i @ 0) { printf ("%d,i@1): printf("です。 ¥n"): return 0; 9 この問題の@の部分に入る数字、記号を教えて欲しいのとなぜそうなるのかも教えていただきたいです(-。-;

  • C言語について

    int a, b; b=3; for (a=4; a>=1; a- -){ b=b+a; printf(“a=%d b=%d¥n”,a,b); } return 0; } すみません最初は省いてしまったのですがこのプログラムの a=3 の時の  b をどう出すのか教えていただきたいです(~_~;)

  • 情報技術検定 C言語について 

    C言語で使う英語や記号の意味、使い道をそれぞれ教えていただきたいです(>人<;) %d &age⇦&単体なのかも知れません(-。-; sum else tmp scan f == print f num if

  • C言語系統に#(0){ コード } という機能

    パワードール4というレトロゲームを購入しました。 ディスクにソース(.C)らしきファイルが入っており読んでみるとどうも各ステージなどで使う処理やエラーメッセージや会話を定数ではなくハードコーディング(ある程度?)しているようです。 各ステージごとに.cファイルを作っているようです。(メンテナンス性はよくなくとも、ステージが量より質、少人数開発とかだとこういう作り方も良いかも) それで本題ですがC言語系統に #(0){ コード  } #(1010){ コード  } #(2000){ コード } というようにソース内を#で区切るような機能はあるのでしょうか? ※これらは.cファイルのなかにいくつも入っています。#(2000){などの中の部分は処理が入っています。 私は発見できなかったので特定の環境ローカルなものですか? C系統ですと処理の単位は関数かクラスメソッドになり例えば func_rect(){ } のようなものになるのではないでしょうか? #()という記載が分からなかったので最初はgotoかなにかか、それともこのファイルはビルドして処理を行っているのではなく実行ファイルが読み込んで解釈をする定数か?と思ってしまいました。

    • ベストアンサー
    • noname#259390
    • C・C++・C#
    • 回答数2